JOIN返回空集

时间:2013-10-27 20:32:37

标签: mysql sql

我需要显示所有未记录标题但在我的数据库中列出网址的艺术家的姓名和ID。

这会调用两个表:

Artists
-------
ArtistID, ArtistName, City, Region, WebAddress

Titles
------
TitleID, ArtistID, Title, StudioID, Genre

我的查询如下:

 select ar.*
 from artists ar
 inner join titles t
 on ar.artistid = t.artistid
 where ar.webaddress != NULL;

返回一个空集。

3 个答案:

答案 0 :(得分:3)

请注意,null不是一个值,所以你不能用相等或不相等的符号来提及它: 试试这个:

select *
from artists
where ar.webaddress Is not NULL
and artistid not in(select distinct artistid in titles)

答案 1 :(得分:3)

在MySql中,null不是值,因此where ar.webaddress != NULL;将不起作用。例如,检查空值有特殊语法,is nullis not null。此外,内部联接只会为您提供具有标题的艺术家。要获得没有标题的艺术家,请尝试外连接并在连接表中检查null

 select ar.*
 from artists ar
 left join titles t
 on ar.artistid = t.artistid
 where ar.webaddress Is not NULL
 and t.ArtistID is null;

答案 2 :(得分:1)

SELECT ar.*
FROM Artists a INNER JOIN Titles T
ON A.ArtistID = T..ArtistID
WHERE a.WebAddress IS NOT NULL 
AND T.Title IS NULL

这将返回记录,其中Webaddressno title为某人