MySQL:在一个可能为NULL的字段上加入一个表

时间:2009-12-15 14:27:16

标签: mysql

我有两个表(版本和格式)以及一个链接到它们的字段 - bar_code。我遇到的问题是这个选择语句:

SELECT
    Release.name,
    Release.default_upc,
    Artist.name,
    Artist.url_name,
    Format.*
FROM
    releases AS Release,
    artists AS Artist,
    formats AS Format
WHERE
    Release.id IN(20015, 2414) AND
    Artist.id = Release.artist_id AND
    Format.bar_code = Release.default_upc

问题是当Release.default_upc = null时,不会返回任何记录。但是,default_upc可以为null的有效行为,如果是查询,会尝试查找带有Format.bar_code = null的格式 - 而只是返回另一个选定的数据。

实际上并不确定这在MySQL中是100%可行的,但可以接受任何建议。

2 个答案:

答案 0 :(得分:3)

使用外部联接。

One site that explains

Another one

答案 1 :(得分:1)

使用外部联接...这是一个快速镜头。请查看其他链接以获取解释。

select Release.name,
       Release.default_upc,
       Artist.name,
       Artist.url_name,
       Format.*
from releases as Release
inner join artists as Artist
    on Artist.id = Release.artist_id
outer join formats as Format
    on Format.bar_code = Release.default_upc
where
    Release.id in (20015, 2414)