我正在尝试编写一个 SQL 命令来返回每条记录,其中 name
、age
和 city
列具有相同的值同表中的值。
id name age city
1 John 22 London
2 John 22 London
3 Nancy 24 Tokyo
我已经找到this question ,看起来这正是我想要的,但不幸的是,当我运行以下命令时,PhpMyAdmin 开始加载但没有完成它,我收到一个 “网关超时错误”
所以我认为我是做错事。我不是一个 sql 向导,所以如果有人可以修复我的代码,我将非常感激。
我不太明白完整的代码,但我认为 ta
和 ta2
是代表我的表名称的变量,但我不熟悉这个主题所以任何帮助都会有用的。
SELECT ta.name
,ta.age
,ta.city
FROM mytablename ta
WHERE (SELECT COUNT(*)
FROM mytable ta2
WHERE ta.name = ta2.name
AND ta.age =ta2.age
AND ta.city =ta2.city)>1
最佳答案
“TA”只是一个别名。它不是变量。它只是让您可以用速记方式引用表格,以便您的查询更加清晰。
如果您只想要重复值,那么您可以使用聚合函数和 HAVING
子句更轻松地完成此操作:
SELECT
TA.name,
TA.age,
TA.city
FROM
MyTableName TA
GROUP BY
TA.name,
TA.age,
TA.city
HAVING
COUNT(*) > 1;
我不确定为什么你的原始查询超时(除了你的表太大以至于该查询无法及时返回之外),但我注意到你没有语句终止符(PostgreSQL 的分号) 。我已经有几年没有使用 PostgreSQL 了,所以我不记得这是否是必需的,但我会添加它以确保确定。
关于mysql - 选择具有多个相等列值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579988/