[英]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.