如果第二个字段相同,我需要执行一个基于1个字段查找值的查询
示例表:
id, what, why
1, 2, 2
2, 3, 4
3, 3, 2
所以我希望结果返回2和3,因为它们都有2的原因。
但是为什么(2)是未知的,所以我只知道什么(2和3)的组合具有相同的原因值。说得通?感谢任何帮助。
另一个例子可能更清楚
id, building, color
1, house, white
2, garage, red
3, garage, white
我查询建筑物=房屋和建筑物=车库的位置,只有在颜色匹配时才会给出结果。
答案 0 :(得分:3)
SELECT what
FROM YourTable A
WHERE EXISTS(SELECT 1 FROM YourTable
WHERE what <> A.what
AND why = A.why)
答案 1 :(得分:2)
你可以这样做:
select *
from test
where why in (
select why
from test
group by why
having count(*) > 1 -- Use = 2 if you want exactly two items
)
内部查询查找具有重复项的所有此类why
,并使用它们的值来过滤外部查询的行。
答案 2 :(得分:1)
使用自我加入。
SELECT t1.what
FROM Table t1
JOIN Table t2
ON t1.why = t2.why and t1.what != t2.what
答案 3 :(得分:0)
这样的事情会起作用吗?
SELECT GROUP_CONCAT(what) as what, why
FROM YourTable
GROUP BY why
HAVING COUNT(*) > 1