查找具有相同列值的行

时间:2013-09-24 19:56:33

标签: mysql sql

如果第二个字段相同,我需要执行一个基于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

我查询建筑物=房屋和建筑物=车库的位置,只有在颜色匹配时才会给出结果。

4 个答案:

答案 0 :(得分:3)

SELECT what
FROM YourTable A
WHERE EXISTS(SELECT 1 FROM YourTable
             WHERE what <> A.what 
             AND why = A.why)

Here is a demo

答案 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
)

Demo on sqlfiddle.

内部查询查找具有重复项的所有此类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

DEMO:http://sqlfiddle.com/#!2/62da8/5