为什么这个IN(内部查询)查询不返回任何结果?

时间:2013-03-29 00:13:11

标签: mysql

以下查询返回一堆重复的解决方案:

SELECT *
FROM solutions s1, solutions s2
WHERE s2.ID <> s1.ID
AND s2.solution = s1.solution

我只关注重复解决方案的数量,因此无法正常工作(例如,如果有n个重复项,则会返回n!

以下查询 应该只返回那些重复的解决方案,而是它返回0结果

SELECT *
FROM solutions s1
WHERE s1.ID IN
(
   SELECT s2.ID
   FROM solutions s2
   WHERE s2.ID <> s1.ID
   AND s2.solution = s1.solution
)

我不能为我的生活找出原因。 MySQL中的内部查询是否存在我不知道的限制?

2 个答案:

答案 0 :(得分:1)

您的内部查询不会返回任何行,因为无法找到s1.ID IN()从与s1.ID s不匹配的ID中选择的列表。

答案 1 :(得分:1)

您可以使用COUNT()轻松确定

SELECT solution, COUNT(id) AS `count`
FROM solutions
GROUP BY solution
HAVING `count` > 1

回答你的问题。您无法在内部查询中引用外部表s1