2017-02-14 68 views
0

我試圖找到一種解決方案,通過SQL從WooCommerce中的數百個產品中刪除特定類別。不幸的是WordPress的核心仍然無法做到這一點,我還沒有發現任何插件或代碼批量編輯類別的WooCommerce產品。MySQL - 在另一列中只選擇具有相同ID和特定值的記錄

我是新來的SQL,並試圖把我在這裏找到的一些查詢放在一起,但沒有一個正常工作。

我相信如果有人知道答案,更多的人會發現這個話題真的很有幫助。

我的產品有多個類別,因此表看起來像這樣:

object_id term_taxonomy_id 
1   10 
1   20 
1   30 
2   10 
2   30 
3   20 
3   30 
3   40 
4   10 
4   20 

我要篩選具有兩種類別10和20的產品..

object_id term_taxonomy_id 
1   10 
1   20 
4   10 
4   20 

..和那麼只有選擇用價值20行,所以輸出應該是這樣的:

object_id term_taxonomy_id 
1   20 
4   20 

我希望我想要實現是可能的。

回答

0

是的,這是可能的使用存在子查詢,檢查與taxinomy ID對象= 10:

select t1.object_id, t1.term_taxonomy_id 
from yourtable t1 
where t1.term_taxonomy_id=20 
    and exists (select 1 
       from yourtable t2 
       where t2.term_taxonomy_id=10 and t2.object_id=t1.object_id) 

您可以使用自聯接或in()子查詢,但存在通常更快,因爲它不需要第二次獲取數據。

+0

完美的作品,非常感謝! –

0

這將選擇重複的行:

SELECT 
    object_id, term_taxonomy_id, COUNT(*) 
FROM 
    YOUR_TABLE_NAME 
GROUP BY 
    object_id, term_taxonomy_id 
HAVING 
    COUNT(*) > 1 
0

另一種方式來過濾,這是通過加入:

SELECT t.object_id, t.term_taxonomy_id 
FROM yourtable t 
    INNER JOIN yourtable t1 
     ON t.object_id = t1.object_id 
     AND t1.term_taxonomy_id = 10 
WHERE t.term_taxonomy_id = 20 

,它可以讓你避免誘發多種選擇存在是暗影的答案條款(這是完全正確的語義,雖然)。

+0

存在的子查詢在多種情況下比聯接更快,因爲存在的子查詢不會獲取任何數據,而您需要在聯接中獲取兩次數據。 – Shadow

+0

尤里謝謝你的回答,你的解決方案也很好,它只比Shadow的慢一點:) –

+0

對,將兩個巨大的數據量進行比較會很有趣 –

相關問題