我有两个表,一个有另一个外键。我希望根据特定条件获取外表中不存在的所有记录。
以下是我的表格:
item_setting
项目
这是我现在使用的查询:
SELECT
iset.setting_id
FROM
item_settings iset
LEFT OUTER JOIN
item i ON i.setting_id = iset.setting_id
WHERE
iset.category_id = '5' AND i.setting_id is null
此查询适用于提供在特定类别的项目表中没有记录的任何setting_id。
但是,现在我想要包含expired_dt小于time()(意味着它已过期)的情况。换句话说,我想补充一点:
WHERE
iset.category_id = '5' AND (i.setting_id is null OR i.expired_dt < '".time()."')
但是,这不起作用,它会返回所有记录。
有什么建议吗?也许我完全过分复杂了....我只想从item_settings表中返回setting_id,其中item表中关联的expired_dt已过期,或者它甚至不存在于item表中。
谢谢!
答案 0 :(得分:1)
尝试将时间戳条件移动到join子句中。像
这样的东西item_settings iset
LEFT OUTER JOIN
item i ON i.setting_id = iset.setting_id and i.expired_dt > time()