作者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