我有两张桌子。offers
和offer_status
。我想从offers
该offer_status
行丢失或该disabled
表中的列为 0 的位置返回行。
这是我尝试这样做的方法:
SELECT offers.id,network,campid,name,url FROM offers
LEFT JOIN offer_status ON offers.id = offer_status.sql_id
AND offer_status.user_id='3'
WHERE country='US'
AND offer_status.disabled != '1'
ORDER BY epc DESC LIMIT 7
但是,如果 in 中的行offer_status
不存在(并且 JOIN 失败),这将不起作用。对我来说,它似乎仍然可以工作,因为 offer_status.disabled 为空。
这确实有效:
SELECT offers.id,network,campid,name,url FROM offers
LEFT JOIN offer_status ON offers.id = offer_status.sql_id
AND offer_status.user_id='3'
WHERE country='US'
AND (offer_status.disabled IS NULL OR offer_status.disabled=0)
ORDER BY epc DESC LIMIT 7
但对我来说,这似乎更糟糕的表现,我仍然很失望我最初的想法没有奏效。
上面的 OR 语句是唯一的方法吗?有没有更好的方法?