看板 Database 關於我們 聯絡資訊
※ 引述《magiclion (神奇獅子)》之銘言: : ※ 引述《danielguo (Daniel Guo)》之銘言: : : 不是很確定想要的效果, 是讓第一個 query 只查詢指定測驗的結果嗎, 如果這樣? : : SELECT grade, COUNT(*) AS count : : FROM student : : WHERE s = 3 : : GROUP BY grade : : HAVING COUNT(*) > 1 : 感謝您的回覆,您提供的是一個解法,是正確的沒有錯。 : 只是後來我會改用 SubQuery 是因為我需要顯示其他欄位資料,打到這裡我才發現 : 我前面的文章打錯了,應該是這樣: : SELECT * FROM student : WHERE s=3 AND grade IN ( : SELECT grade FROM student : GROUP BY grade HAVING (COUNT(*) > 1)) : 也就是說,第一個 SELECT 是要顯示所有欄位。 : 不知道純 SQL 語法有沒有辦法就顯示所有欄位,並找出某欄位的重複資料, : 並且加一個欄位顯示重複次數呢? SELECT s1.*, t1.count FROM student s1 INNER JOIN (SELECT grade, COUNT(*) AS count FROM student WHERE s = 3 GROUP BY grade HAVING COUNT(*) > 1) t1 ON s1.grade = t1.grade WHERE s1.s = 3 另外裡面的 query 我也加上 WHERE, 這樣就只要統計該場測驗的成績 (雖然如果 query optimizer 夠聰明的話可能會自己做掉) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.93.105.54
magiclion:感謝您的回答,已測試無誤!又多學一招! 06/03 12:32