繁体   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