如果行存在于其他表中,则MySQL值为0或1

Som*_*oma 3 mysql sql row return exists

搜索了StackOverflow一段时间了,我找不到可以使用的答案,所以这是我的问题:

我有一个名为"uploads"的表,我在其中存储有关网站上所有上传图像的信息.

然后我有另一张名为"画廊"的桌子.如果"gallery"(col文件)中存在"uploads"(col id)中的条目,则上传的文件将解锁到库中,如果"uploads"中的条目不在"gallery"中,则它将被锁定.

如果我使用普通的JOIN,则"上传"中不在"图库"表中的所有条目都将丢失.

我想要类似的东西:

SELECT [some other properties], (IF entry exists in gallery then 1 else 0) AS unlocked FROM ... WHERE ...
Run Code Online (Sandbox Code Playgroud)

jue*_*n d 6

用一个 left join

SELECT (g.file is not null) as unlocked
FROM uploads u
left join gallery g on g.file = u.id 
Run Code Online (Sandbox Code Playgroud)

  • 作为一个注释,"case"是不必要的.你可以做`(g.file不为null)为unlocked`. (2认同)