0

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

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 中的内部查询是否存在我不知道的限制?

4

2 回答 2

1

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

于 2013-03-29T00:15:23.650 回答
1

你可以用COUNT()它来很容易地确定这一点

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

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

于 2013-03-29T00:19:20.683 回答