如果在MySQL的第二个表中没有记录,如何查询两个表并返回NULL?
作者:互联网
我正在运行MySQL 5.0.88,需要从两个表中选择数据,即文章和媒体.
将图像上传到服务器时,我需要查询用户的所有文章,并查看媒体表中是否已经指定了路径(字段类型=“ img”),以避免运行不必要的覆盖.
我曾希望只在查询中包含m.type,但无法使其正常工作.
我的查询如下所示:
SELECT DISTINCT a.style, a.filename, a.path, m.type
FROM articles AS a
LEFT JOIN mnedia AS m
ON a.iln = m.iln
WHERE
a.iln = id_12345
AND m.type = "img"
AND m.type IS NOT NULL
这给了我用户id_12345的所有文章(正确),但类型字段始终为img,尽管媒体表中只有一条记录适用于文章abc.
题:
我需要如何查询,因此它返回用户(工作中)的所有文章,其中表中未列出的文章显示type = NULL,表中未列出的文章显示type =“ img”(例如作为abc)?
感谢帮助!
编辑:
表格文章可能包含记录:
abc
d
e
f
g
餐桌媒体可能包括
abc type=img
查询应返回:
abc type=img
d type=NULL
e type=NULL
f type=NULL
g type=NULL
编辑:
我也不会介意获取不在媒体上的文章中的所有记录,例如在this图像上,左手第二次连接(“ b.Key IS NULL”)
解:
好.加入两个表时,我需要检查user_id之外的另一个字段.它是这样工作的:
SELECT DISTINCT a.style, a.filename, a.path, m.type
FROM articles AS a
LEFT JOIN mnedia AS m
ON a.iln = m.iln
AND a.style= m.style
WHERE
a.iln = id_12345
AND ( m.type = "img" OR m.type IS NULL )
感谢您的建议!
解决方法:
您应该在LEFT JOIN上放置m.type =“ img”条件,而不是将其放在WHERE子句中:
SELECT DISTINCT a.style, a.filename, a.path, m.type
FROM articles AS a
LEFT JOIN mnedia AS m
ON a.iln = m.iln
AND m.type = "img"
WHERE a.iln = id_12345;
标签:multiple-tables,select,left-join,mysql 来源: https://codeday.me/bug/20191127/2076837.html