我有两个桌子
channel_titles
channel_grid
在channel_grid
内有一个名为col_id_15
的列。
我需要查询entry_id
其中
entry_id
表中的channel_grid
不存在 entry_id
表中确实存在channel_grid
,则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'
有人能帮忙吗?
答案 0 :(得分:1)
根据您的两个要求,这应该可行:
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_id_15是varchar,因为单引号会将其视为字符串而不是数字。如果它实际上是一个INT,则可以将单引号引起来。
答案 1 :(得分:0)
您的查询似乎正确。但是,如果要获取channel_grid表中不存在的所有entry_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
答案 2 :(得分:0)
SELECT ct.entry_id
FROM channel_titles AS ct
左联接channel_grid AS g ON g.entry_id = ct.entry_id
g.col_id_15 <> 1或g.entry_id IS NULL
好吧,我认为您的问题可以进一步简化,以便于理解。