作者passersby (passersby)
看板Database
標題[SQL ] MySQL中有關left join的問題
時間Wed Feb 3 12:27:48 2010
我現在有兩個資料表
Table People
PK: ID
ID Name
------------
1 Sally
2 Michell
3 Sam
4 Tony
Table ActRecord
PK: ID, Value
ID Value
-------------
1 1
2 1
1 2
3 3
想要抓出在ActRecord中沒有Value=1的資料的所有人名:
Name
------------
Sam
Tony
第一個做法是用subquery:
SELECT Name
FROM People
WHERE ID NOT
IN (
SELECT ID
FROM ActRecord
WHERE Value = '1'
);
這個可以正常跑出結果 但performance有點差
改用left join搭配is null時卻抓不到半筆資料:
SELECT Name
FROM People
LEFT JOIN ActRecord
ON People.ID = ActRecord.ID
WHERE ActRecord.Value = '1'
AND ActRecord.ID IS NULL;
想請問一下 我left join這部分有哪裡該做修正的
感謝指教orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.130.94
→ ssccg:AND改OR? 02/03 12:32
→ passersby:改成OR 抓出來的資料不是我要的orz 02/03 12:33
推 rushcat:有試過把ActRecord.Value = '1' 放到LEFT JOIN條件去嗎? 02/03 12:36
→ passersby:感謝樓上 可以了:D 02/03 12:43