簡體   English   中英

Mysql如何通過2個查詢過濾多行的結果

[英]Mysql how to filter results on multiple rows by 2 queries

我試圖過濾關系在多行中的結果,因此我需要首先通過匹配一個值來獲取ID,然后再次使用查詢從另一行獲取來自同一個表的檢索值的值。

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

所以我通過匹配第1行的鍵和值得到ID,現在在同一個查詢中我希望獲得第2行和第3行的元值來生成最終結果,我現在無法這樣做。

有人可以建議嗎?

您可以使用子查詢執行此操作,例如:

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

這將為您提供屬於該ID的所有記錄。 現在,如果您不想要結果中的第一行,那么您可以排除它,例如:

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

這樣的事情會起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM