2013-03-29 87 views
0

下面的查詢返回了一堆對重複的解決方案的。爲什麼IN(內部查詢)查詢不返回任何結果?

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中的內部查詢有沒有限制,我不知道?

回答

1

您的內部查詢不會返回任何行,因爲無法找到從與s1.ID s不匹配的ID中選擇的列表s1.ID IN()

+0

是的我知道這一點,請閱讀這個問題... –

+0

@ BlueRaja-DannyPflughoeft請參閱編輯 –

+0

重新編輯:當然's1.ID'不會出現在不包含' s1.ID' - 這可能是我做過的最愚蠢的錯誤。謝謝你指出,我會接受,當它允許我。 –

1

您可以使用COUNT(),以確定此很容易

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

要回答你的問題。內部查詢中不能引用外部表s1

+0

無法引用關係會導致錯誤嗎? (我使用SQL Server並期待儘可能多。) – 2013-03-29 00:21:31

+0

我假設你的意思是'解決方案'而不是'id'。但是,這個答案與我的問題是相切的...... –

+0

@ BlueRaja-DannyPflughoeft在你的示例中,你正在顯示'solutions'作爲你的表名和'id'作爲你正在尋找傻瓜的領域。我確實提供了有關您的子選擇無法正常工作的信息。儘管我在最初的回答後不久添加了這個內容。 –

相關問題