2017-02-18 66 views
1

我想過濾結果,其中關係是在多個行中,所以我需要先通過匹配值來獲取ID,然後再次使用查詢來從另一行用於從同一個表中檢索到的值。Mysql如何通過2個查詢過濾多個行的結果

ID - MetaKey - MetaValue 
142398 - _wc_checkout_add_on_id - 4 
142398 - _wc_checkout_add_on_value - wife 
142398 - _wc_checkout_add_on_label - Wife 

所以我通過我想獲得第二和第三排的metavalue生成最終結果在同一查詢中從第1行的匹配鍵和值,現在得到ID,我當時無法這樣做。

任何人都可以建議嗎?

回答

1

像這樣將工作:

SELECT t2.* 
FROM yourTAble t1 
LEFT JOIN yourTable t2 
    ON t1.id = t2.id 
    AND NOT t2.MetaKey = t1.MetaKey 
WHERE t1.id = 142398; 
2

你可以用子查詢做到這一點,例如:

SELECT * 
FROM table 
WHERE id IN (
SELECT id FROM table WHERE metaKey = ? AND metaValue = ? 
); 

這會給你所有屬於該ID的記錄。現在,如果你不想在結果的第一行,那麼你CA排除ITM,如:

SELECT * 
FROM table 
WHERE id IN (
SELECT id FROM table WHERE metaKey = ? AND metaValue = ? 
) 
AND metaKey <> ? AND metaValue <> ?; 
+0

結果還包括ROW1 –

+0

這不是在問題中提到(即,是否第一行需要排除) ,我已經添加了另一個查詢來排除它。 –

+0

OK,ihve投了 –