[英]Multiple condition with sub-query
我有以下查詢:
SELECT * FROM a WHERE
cityid IN (SELECT id FROM b)
OR regionid IN (SELECT id FROM b)
OR countryid IN (SELECT id FROM b)
有沒有辦法(使用 MySQL 語法)避免運行子查詢 3 次?
可以使用連接而不是使用子選擇
SELECT a.* FROM a
LEFT OUTER JOIN b
ON (a.cityid = b.id OR a.regionid = b.id or a.countryid = b.id)
WHERE b.id IS NOT NULL
更新:
第一次嘗試是:
SELECT a.*
FROM a
LEFT JOIN b AS city
ON a.cityid = city.id
LEFT JOIN b AS region
ON a.regionid = region.id
LEFT JOIN b AS country
ON a.countryid = country.id
我認為這是錯誤的,因為所有的行a
將與上述顯示。
正確的方法是我認為 KarlsFriend 的一個,或者這個
第二次嘗試:
SELECT a.*
FROM a
INNER JOIN b
ON ( a.cityid = b.id OR a.regionid = b.id or a.countryid = b.id )
但是無論您使用哪種方式,即使是您原來的方式,我認為查詢計划不會包括運行子查詢(SELECT id FROM b)
3 次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.