如果我有这样的表:
id date_from date_to n_n n_d i_s ...
591 2014-04-26 2014-05-03 1 NULL 1 ...
595 2014-04-26 2014-05-03 1 NULL 1 ...
我有一个这样的查询:
SELECT id
FROM t
WHERE ROW(date_from, date_to, n_n, n_d, i_s) =
(SELECT date_from, date_to, n_n, n_d, i_s FROM t WHERE id = 591);
我希望结果是一个包含两个 id 591 和 595 的 id 列。但我得到一个空结果。这有什么问题吗?
我需要做的是:找出某些列上相等的所有行的 id。
最佳答案
这是因为 NULL
比较。通常,NULL
不能用通常的相等比较运算符来处理。有诸如IS NULL
之类的东西。但在你的情况下,使用 <=>让您的查询获得正确的结果:
SELECT id
FROM t
WHERE ROW(date_from, date_to, n_n, n_d, i_s) <=>
(SELECT date_from, date_to, n_n, n_d, i_s FROM t WHERE id = 591);
关于mysql - 用于查找相似行 id 的行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19858675/