推 magiclion:感謝您的回答,已測試無誤!又多學一招! 06/03 12:32
※ 引述《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