我很难使用MySQL查询。
如果我执行以下操作:
SELECT ads.id_ad
FROM tab_ads ads, tab_orders orders
WHERE (ads.id_user = 111 AND ads.id_ad = orders.id_ad)
它给了我正确的答案,即:"显示属于用户111的已售出的广告"
我想要的是删除所有广告,但已售出的广告除外。
所以我在where标准中改变等于不等于:
SELECT ads.id_ad
FROM tab_ads ads, tab_orders orders
WHERE (ads.id_user = 111 AND ads.id_ad != orders.id_ad)
它给了我垃圾的结果。
例: 我有三张桌子:
tab_ads
id_ad - title - etc.
01 - title1
02 - title2
03 - title3
tab_orders
id_order - id_ad - amount - etc.
XX - 01 - $10
tab_users
id_user - name - etc.
110 - Dr. Jivago - etc.
111 - Sherlock - etc.
我需要删除111(Sherlock)中没有卖出的所有广告。所以我需要删除广告02 - title2和03 - title3,因为广告01 - title1已经售出,我需要保留它以供将来咨询。
答案 0 :(得分:0)
您可以使用not in和subselect
select ads.id_ad
FROM tab_ads
where ads.id_ad not in (
SELECT ads.id_ad
FROM tab_ads ads
INNER JOIN tab_orders orders on ads.id_user = 111 AND ads.id_ad = orders.id_ad)
)
AND tab_ads.id_user = 111