gpt4 book ai didi

mysql - 如果一条记录不在 MySQL 的第二张表中,如何查询两个表并返回 NULL?

转载 作者:可可西里 更新时间:2023-11-01 08:20:49 25 4
gpt4 key购买 nike

我正在运行 MySQL 5.0.88 并且需要从两个表中选择数据,分别是 articlesmedia

当上传图片到我的服务器时,我需要查询一个用户的所有文章,看媒体表(字段type="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 的所有文章(正确),但是 type 字段总是 img 尽管媒体表只有一个文章 abc 的记录

问题:
我需要如何查询,所以它返回用户(工作)的所有文章显示 type=NULL 的文章,这些文章未在表 media 中列出type="img" 是否为 media 表中列出的文章(例如 abc)?

感谢您的帮助!

编辑:表 articles 可能包含记录:

abc 
d
e
f
g

media 可能包括

abc type=img

查询应该返回:

abc type=img
d type=NULL
e type=NULL
f type=NULL
g type=NULL

编辑:
我也不介意获取 articles 中不在 media 中的所有记录,例如 this image, 2nd join left hand side ("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 )

感谢大家的建议!

最佳答案

您应该将 m.type = "img" 条件放在 LEFT JOIN 上,而不是将其放在 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;

关于mysql - 如果一条记录不在 MySQL 的第二张表中,如何查询两个表并返回 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11984158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com