Mysql 查找与列值相同的行

Mysql 查找与列值相同的行,mysql,sql,Mysql,Sql,如果第二个字段相同,我需要执行一个查询,根据第1个字段查找值 示例表: id, what, why 1, 2, 2 2, 3, 4 3, 3, 2 所以我希望结果返回2和3,因为它们都有2的why 但是为什么2是未知的,所以我只知道如果2和3的组合具有相同的为什么值。有道理吗?谢谢你的帮助 另一个例子可能更清楚 id, building, color 1, house, white 2, garage, red 3, garage, white 我查询building=h

如果第二个字段相同,我需要执行一个查询,根据第1个字段查找值

示例表:

id, what, why
1, 2, 2
2, 3, 4
3, 3, 2
所以我希望结果返回2和3,因为它们都有2的why

但是为什么2是未知的,所以我只知道如果2和3的组合具有相同的为什么值。有道理吗?谢谢你的帮助

另一个例子可能更清楚

id, building, color
 1,   house,  white
 2,  garage,  red
 3,  garage,  white
我查询building=house和building=garage的位置,只有当它们具有匹配的颜色时才会给出结果

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


当然可以。

是否需要这项工作:

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

演示:

是否需要此作品:

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

演示:

您可以这样做:

select *
from test
where why in (
  select why
  from test
  group by why
  having count(*) > 1 -- Use = 2 if you want exactly two items
)

内部查询将查找所有具有重复项的原因,并使用其值筛选外部查询的行。

您可以这样做:

select *
from test
where why in (
  select why
  from test
  group by why
  having count(*) > 1 -- Use = 2 if you want exactly two items
)
内部查询将查找所有具有重复项的原因,并使用其值筛选外部查询的行。

使用自联接

SELECT t1.what
FROM Table t1
JOIN Table t2
ON t1.why = t2.why and t1.what != t2.what
使用自联接

SELECT t1.what
FROM Table t1
JOIN Table t2
ON t1.why = t2.why and t1.what != t2.what

你要选择那些有为什么2?没有意义的。提供更多示例数据和预期输出。您希望选择那些具有“为什么2?没有意义”的人。提供更多的样本数据和预期输出。团队合作?好的,但这个的默认值是1024,如果它更长并且不能在MySQL中更改设置,这将是一个问题。@mkjasinski:这只是一个想法。我不太确定OP想要什么。您需要一个大于1的计数,以防止显示没有重复的值。@Barmar:已添加。谢谢:小组会议?好的,但这个的默认值是1024,如果它更长并且不能在MySQL中更改设置,这将是一个问题。@mkjasinski:这只是一个想法。我不太确定OP想要什么。您需要一个大于1的计数,以防止显示没有重复的值。@Barmar:已添加。谢谢:添加了其中t1.what=$value1和t2.what=$value2,因为我只需要带有匹配原因的特定结果。添加了其中t1.what=$value1和t2.what=$value2,因为我只需要带有匹配原因的特定结果。