我有两个表,一个表具有另一个的外键。我想根据某些条件获取外部表中不存在的所有记录。

这是我的表格:

item_setting


setting_id
category_id


项目


item_id
setting_id
名称
expired_dt


这是我现在正在使用的查询:

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()."')


但是,这不起作用,它将返回所有记录。

有什么建议么?也许我已经完全把这个复杂化了。

谢谢!

最佳答案

尝试将时间戳记条件移到join子句中。就像是

item_settings iset
LEFT OUTER JOIN
    item i ON i.setting_id = iset.setting_id and i.expired_dt > time()

关于php - MySQL Join表并获取不存在的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9909711/

10-10 19:18