作者mybluesky (天族)
看板CSSE
标题Re: [问题] SQL count 的替代方法
时间Mon Nov 8 00:31:53 2010
※ 引述《dayyoung (dayyoung)》之铭言:
: ※ 引述《dayyoung (dayyoung)》之铭言:
: : 查阅了久 想请问一下关於 count的替代方法
: : 比如说一个table T有三个栏位 name,age, car id
: : SELECT name
: : FROM T
: : WHERE T.age > 20
: : GROUP BY T.name
: : HAVING count(*) > 1
: : 这样就可以找到哪些人年纪大於20岁且拥有超过一台车
: : 如果不能用count请问有代替的方法吗?感谢大家
: 感谢大家提供的方法
: 假设 table 如下
: NAME AGE CAR_ID
: --------------- ---------- ---------------
: john 19 honda01
: john 19 accord01
: Mary 21 honda02
: Mary 21 accord00
: jin 22 toyota11
: 正确的答案应该只有Mary因为他有两台车
: 大家提供的第二方法 如果是
: select name
: from T
: where T.age > 20 and car_id!='';
: 这样好像得不到任何结果ㄟ
: 第一种方法我再试试 感谢大家 谢谢
--效能不好
SELECT DISTINCT t1.name
FROM T t1,T t2
WHERE t1.name = t2.name
AND t1.age = t1.age
AND t1.age > 20
AND t1.car_id <> t2.car_id
--与IN类似
SELECT t1.name
FROM T t1
WHERE t1.age > 20
AND EXISTS (
SELECT 1
FROM T t2
WHERE t1.name = t2.name
AND t1.age = t2.age
AND t1.car_id <> t2.car_id
)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.8.193