连接查询问题

时间:2011-08-09 18:30:04

标签: mysql

我有两张表跟踪列表和歌曲。我从歌曲中获取所有值,其中sid为主要曲目,tracklist为sid为foreign。虽然使用此查询从歌曲中获取所有值是成功的。

SELECT t.sid as tsid, s.sid as ssid, s.name from song s LEFT JOIN tracklist t ON s.sid=t.sid;

但是,如果我希望从歌曲中获取那些不在轨道列表中的值,则此查询不会获取单行。

SELECT t.sid as tsid, s.sid as ssid, s.name from song s LEFT JOIN tracklist t ON s.sid=t.sid where t.sid= NULL;

4 个答案:

答案 0 :(得分:3)

而不是=NULL,请使用IS NULL

SELECT t.sid as tsid, s.sid as ssid, s.name from song s LEFT JOIN tracklist t ON s.sid=t.sid where t.sid IS NULL;

答案 1 :(得分:2)

我认为你想使用IS NULL而不是= NULL

e.g:

SELECT t.sid as tsid, s.sid as ssid, s.name 
FROM song s 
LEFT JOIN tracklist t ON s.sid=t.sid 
WHERE t.sid IS NULL

答案 2 :(得分:0)

SELECT t.sid as tsid, s.sid as ssid, s.name from song s LEFT JOIN tracklist t ON s.sid<>t.sid;

检查s.sid的id是否为null。如果你没有给出id那么它就不会返回它。

<>表示不相等......

答案 3 :(得分:0)

我认为这应该有效:

SELECT t.sid as tsid, s.sid as ssid, s.name 
from song s LEFT OUTER JOIN tracklist t ON s.sid=t.sid where t.sid IS NULL;