我試圖解決一個看似簡單的問題,但我想我正在跳過了解EXISTS關鍵字的工作原理。問題很簡單(這是實際問題的簡單版本) - 我有一張學生表和一張愛好表。學生表中有他們的學生ID和姓名。僅返回具有相同業餘愛好數的學生(即不會顯示具有獨特業餘愛好的學生)SQL比較同一表中的COUNT值
因此,我遇到的困難是如何比較業餘愛好的數量。我試過的是這個。
SELECT sa.studentnum, COUNT(ha.hobbynum)
FROM student sa, hobby ha
WHERE sa.studentnum = ha.studentnum
AND EXISTS (SELECT *
FROM student sb, hobby hb
WHERE sb.studentnum = hb.studentnum
AND sa.studentnum != sb.studentnum
HAVING COUNT(ha.hobbynum) = COUNT(hb.hobbynum)
)
GROUP BY sa.studentnum
ORDER BY sa.studentnum;
那麼,什麼似乎發生的是,hobbynums的數量是相同的每個測試,結果全部被返回的原始表,而不是隻爲匹配了相同數量的愛好是。
你只是比較兩個學生的興趣愛好,這足夠了嗎?我的意思是說那種愛好怎麼樣?我喜歡學習和其他人喜歡游泳,我們兩個人的觀點是否一致?! – Rikki
是的 - 只是在這種情況下的計數,實際的愛好並不重要,這是實際問題的簡化版本 –
簡化版本的問題更令人困惑,我建議您與真實情況一起,我們可以在那裏談論你需要改變的地方 – Rikki