0

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

4 回答 4

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

这是一个演示

于 2013-09-24T19:59:32.467 回答
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
)

sqlfiddle 上的演示。

内部查询查找所有why具有重复项的此类 s,并使用它们的值来过滤外部查询的行。

于 2013-09-24T20:03:29.147 回答
1

使用自联接。

SELECT t1.what
FROM Table t1
JOIN Table t2
ON t1.why = t2.why and t1.what != t2.what
于 2013-09-24T20:21:57.753 回答
0

像这样的工作:

SELECT GROUP_CONCAT(what) as what, why
FROM YourTable
GROUP BY why
HAVING COUNT(*) > 1

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

于 2013-09-24T20:00:36.130 回答