【问题标题】:How to find MySQL records having one field's content within any row of another field如何在另一个字段的任何行中查找具有一个字段内容的 MySQL 记录
【发布时间】:2018-01-25 19:18:32
【问题描述】:

问题很简单。是否有一个 MySQL 查询允许在单个表中在另一列的任何行中查找具有某些内容的所有记录?

换句话说,我有一个包含 2 列的表:“FirstName”和“LastName”。

我的自动灌装机已经融化了其中的一些。

所以我想找出所有出现在“FirstName”列中的“LastName”。

这样,所有 Doe JOHN 都会被检测到,因为“John”必须 100% 在“FirstName”列表中,而 John DOE 不会被检测到,因为几乎没有机会找到 DOE 作为名字...

【问题讨论】:

  • 样本数据和期望的结果真的很有帮助。
  • SELECT * FROM mytable WHERE FirstName LIKE 'John' OR LastName LIKE 'John'这是你需要的吗?
  • 可怜的老埃尔顿。

标签: mysql sql database


【解决方案1】:

只需对表执行自联接。它应该看起来像这样:

SELECT 
    *
FROM
    CUSTOMER C1
        INNER JOIN
    CUSTOMER C2 ON (C1.FirstName = C2.LastName OR C1.LastName = C2.FirstName);

【讨论】:

  • 效果很好,就像 smullan 的回答一样。你的似乎更快,但理解起来有点复杂。也不允许使用 phpMyAdmin 进行编辑。非常感谢
【解决方案2】:

我猜你想要这样的东西:

SELECT * 
FROM nametable
WHERE firstname IN (select lastname FROM nametable)

这将找到表中名字作为姓氏存在的行。

【讨论】:

  • 谢谢。这正是我所需要的。这是我的最终请求 SELECT * FROM clients_table WHERE lastname IN (SELECT firstname FROM clients_table) 这样,行可以在 phpMyAdmin 中直接编辑
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
相关资源
最近更新 更多