检查join是否存在,列是否不相等

b4lqfgs4  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(346)

我有两张table

channel_titles
channel_grid

内部 channel_grid ,有一列名为 col_id_15 .
我需要询问 entry_id 哪里
要么 entry_id 不存在于 channel_grid table
或者如果 entry_id 是否存在于 channel_grid table,table col_id_15 不等于 1 我原以为下面的办法行得通。

SELECT ct.entry_id
FROM channel_titles AS ct
LEFT JOIN channel_grid AS g ON g.entry_id = ct.entry_id                      
WHERE g.col_id_15 != '1'

有人能帮忙吗?

wmtdaxz3

wmtdaxz31#

从频道标题中选择ct.entry\u id作为ct left join channel\u grid作为g on g.entry\u id=ct.entry\u id
其中g.col\u id\u 15<>1或g.entry\u id为空
好吧,我想你的问题可以进一步简化以便理解。

qyyhg6bp

qyyhg6bp2#

根据你的两个要求,这应该是可行的:

SELECT ct.entry_id
FROM channel_titles AS ct
LEFT JOIN channel_grid AS g ON ct.entry_id = g.entry_id                      
WHERE g.entry_id IS NULL OR g.col_id_15 <> '1'

只需确保g.col\u id\u 15是varchar,因为单引号将其视为字符串而不是数字。如果它是一个int,你可以去掉单引号。

lo8azlld

lo8azlld3#

你的问题似乎是对的。但是,如果您想获取通道网格表中不存在的所有条目\ id,则必须检查g.entry\ id是否等于null。

SELECT ct.entry_id
FROM channel_titles AS ct
LEFT JOIN channel_grid AS g ON g.entry_id = ct.entry_id                      
WHERE g.entry_id IS NULL OR g.col_id_15 != '1'

该条件是必需的,因为将任何值与null进行比较总是返回null。例如:

SELECT NULL != '1' // return NULL

相关问题