101 高考資料庫應用 - 高考

Table of Contents

[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處

出處:如題
假設現有如下有關單車出租管理的需求:
‧可以查詢單車資料,包括廠牌、編號、出廠日期、購入日期、購入金額、尺寸、
種類(如可否變速、淑女車、兒童車、雙人座...)。
‧可以查詢單車出借的清單,清單中包括租車人姓名、聯絡電話、單車、出租日期、
出租期間(開始及結束的時間)、租金總額。
‧可以查詢租車人租車清單,包括租車人
姓名(需考慮同姓同名的辨識方式)、
租車日期及期間(需考慮同一人可能於同一天租同一部單車一次以上)。

請使用SQL回應如下的查詢


列出租車記錄超過1次的客戶姓名及聯絡電話

補習班解答是:
SELECT 姓名,聯絡電話
FROM 租車人
WHERE 租車人編號IN
(SELECT 租車人編號
FROM 單車出租
GROUP BY 租車人編號
HAVING COUNT(*)>1)


請問可以將IN改成EXISTS嗎?
IN取出的不是只有一筆嗎?

--

All Comments

Hardy avatarHardy2013-06-15
1IN可有多個值,例:欄位 IN ('值1','值2')
Queena avatarQueena2013-06-17
你改成exists也可以 但 in 寫起來比較快一點
Selena avatarSelena2013-06-21
這類型題 你自己用MY SQL建個TABLE SELECT一下就知道了
Isabella avatarIsabella2013-06-23
還可以搞懂一些疑惑的點
Emma avatarEmma2013-06-24
having count(*)>1可以這樣用嗎? 不需要出現在select?
Hedy avatarHedy2013-06-27
having count(*)>1 只是在過濾功能而已 不需要出現在select
Ivy avatarIvy2013-06-29
sorry我錯了 強制分組可用
Candice avatarCandice2013-07-02
這題應該可以不用巢狀select
Rosalind avatarRosalind2013-07-06
直接寫 WHERE 租車人編號=單車出租 租車人編號
Tristan Cohan avatarTristan Cohan2013-07-09
再group by 姓名 電話 having count(*)>1 就可以了吧
Oscar avatarOscar2013-07-11
這題是要>1如果照你那樣會連只租一次的也會出來
Linda avatarLinda2013-07-16
搞笑了原來還沒打完
Joseph avatarJoseph2013-07-16
可是 我後面having已經將只租一次的濾掉了阿@@