2
多重條件,我有以下查詢:MySQL的:與子查詢
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次?
非常感謝!
多重條件,我有以下查詢:MySQL的:與子查詢
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
更新時間:
1日試是:
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)
但無論哪種方式,即使你原來的一個,我不認爲查詢計劃將包括運行3次子查詢(SELECT id FROM b)
。
尼斯。我會將'LEFT'更改爲'INNER JOIN',並將'WHERE b.id IS NOT NULL'全部刪除。 – 2011-06-16 14:17:56
這解決了具體的情況,但它不回答一般問題。在子查詢不能用聯接替換的情況下,如何用子查詢的結果表示多個比較而不重複子查詢?仍然沒有答案。 – matteo 2013-05-14 19:25:48