Mysql 查找与列值相同的行
如果第二个字段相同,我需要执行一个查询,根据第1个字段查找值 示例表: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
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,因为我只需要带有匹配原因的特定结果。