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

を使用COUNT()して、これを非常に簡単に判断できます

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

あなたの質問に答えるために。s1内部クエリで外部テーブルを参照することはできません。

于 2013-03-29T00:19:20.683 に答える
1

s1.ID IN()sに一致しない ID から選択されたリストを見つけることができないため、内部クエリは行を返しませんs1.ID

于 2013-03-29T00:15:23.650 に答える