我有兩個表,一個表中有一個外鍵。我想根據某些標準獲取外表中不存在的所有記錄。MySQL加入表並獲得不存在的結果
這裏是我的表:
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()."')
但是,這不起作用,它會返回所有記錄。
有什麼建議嗎?也許我完全過於複雜這....我只想從item_settings表中返回setting_id,其中項目表中關聯的expired_dt過期或者它甚至不存在於項目表中。
謝謝!
什麼列類型是expired_dt? – liquorvicar 2012-03-28 14:36:45
你的Where子句看起來很好,但是i.expired_dt <'「.time()。」'條件真的很奇怪,請檢查expired_dt列中的每個值是否都是真的 – Hari 2012-03-28 14:39:55
expired_dt總是非null? – 2012-03-28 14:40:33