這是那些日子之一,我只是無法弄清楚這一點。Where子句等於一個字段,不等於另一個
我有以下查詢:
SELECT * FROM wp_posts
JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID
WHERE term_taxonomy_id = 80
顯然,這種選擇所有處於類別ID 80.我需要做的是選擇所有在80類,但不是什麼職位的職位在類別109
我已經試過這一點,但它只是選擇從類別80
SELECT * FROM wp_posts
JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID
WHERE term_taxonomy_id = 80
AND term_taxonomy_id = 109
這裏同樣職位的表結構:
wp_posts
| ID |
------------
| 1 |
| 2 |
wp_term_relationships
| object_id | term_taxonomy_id |
|-----------|------------------|
| 1 | 80 |
| 2 | 80 |
| 1 | 109 |
OBJECT_ID匹配POST_ID
查詢應該只因爲ID 1返回ID 2在這兩個80和109
我知道我這樣做了一百萬次,但我就是」爲了我的生活得到這個工作。任何幫助?
+1,但回覆:「一般情況下,在MySQL中,我們發現,JOIN操作(包括反連接操作)通常優於子查詢「:對於某些類型的子查詢,這是正確的,但根據我的理解,最近版本的MySQL在識別IN(...)和NOT IN(...)作爲半連接和反連接時沒有任何問題(分別)並相應地優化。 – ruakh
@ruakh ...這就是爲什麼我建議'EXPLAIN'輸出和測試是合適的。它絕對取決於哪個版本的MySQL。例如,在MySQL 5.1中,NOT IN(子查詢)不會產生與等價的「LEFT JOIN ... WHERE ... IS NOT NULL」查詢相同的計劃。 (有趣的是,'LEFT JOIN'查詢在解釋輸出中顯示''; not exists'',而一個'NOT EXISTS'查詢顯示了一個與'NOT IN'查詢相同的計劃,這兩個查詢都顯示了'DEPENDENT SUBQUERY'解釋輸出。 – spencer7593