作者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
1F:→ ssccg:AND改OR? 02/03 12:32
2F:→ passersby:改成OR 抓出来的资料不是我要的orz 02/03 12:33
3F:推 rushcat:有试过把ActRecord.Value = '1' 放到LEFT JOIN条件去吗? 02/03 12:36
4F:→ passersby:感谢楼上 可以了:D 02/03 12:43