作者cytogenous (有希望? 希望有!)
看板Database
標題[SQL ] 如何在同一table中找出相同的資料
時間Thu Oct 16 09:12:11 2008
請問大家, 若我現有一table的schema如下
Books(Library_name: string, ISBN: string, Book_name: string)
(無PRIMARY KEY 的限制)
而我想找出這其中每個圖書館都有的書, 且回傳每間圖書館的本數
L_NAME ISBN B_NAME BOOKCOUNT
------------- -------------------- ---------------- -----------
LIBRARY A 0-12345-678-3 DM BOOK 1
LIBRARY A 0-12345-678-9 DB BOOK 2
LIBRARY B 0-12345-678-3 DB BOOK 2
LIBRARY B 1-12345-678-6 DM BOOK 1
我本來的寫法:
SELECT LIB1.L_NAME, LIB1.ISBN, LIB1.B_NAME, COUNT (*) BOOKCOUNT
FROM BOOKS LIB1
WHERE LIB1.L_NAME = 'A'
GROUP BY LIB1.L_NAME, LIB1.ISBN, LIB1.B_NAME
HAVING EXISTS (
SELECT LIB2.L_NAME, LIB2.ISBN, LIB2.B_NAME, COUNT (*)
FROM BOOKS LIB2
WHERE LIB2.L_NAME = 'B'
GROUP BY LIB2.L_NAME, LIB2.ISBN, LIB2.B_NAME
HAVING LIB1.ISBN = LIB2.ISBN AND LIB1.B_NAME = LIB2.B_NAME );
但這樣只能回傳LIBRARY A的書及數量而已,
請問有更好的SQL語法嗎? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 67.171.67.160
推 tactical:你的ISBN是可以重複用的?(第一行跟第三行) 10/16 14:30
→ cytogenous:是的 無PRIMARY KEY CONSTRAINT 10/16 23:14