作者danielguo (Daniel Guo)
看板Database
标题Re: [SQL ] 筛选重复资料加上 SubQuery
时间Wed Jun 1 13:25:11 2011
※ 引述《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
1F:推 magiclion:感谢您的回答,已测试无误!又多学一招! 06/03 12:32