我尝试编写一个SQL命令,返回每条记录,其中name
,age
和city
列在同一个表中具有相同的值。
id name age city
1 John 22 London
2 John 22 London
3 Nancy 24 Tokyo
我已经找到了this question,而且它似乎正是我想要的,但不幸的是,当我运行以下命令时,PhpMyAdmin开始加载并且没有完成它并且我得到一个"Gateway Timeout error"
,所以我假设我做错了什么。我不是一个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
答案 0 :(得分:0)
" TA"只是一个别名。它是不变量。它只是让您用速记来引用表格,以便您的查询更清晰。
如果您只想要重复值,那么您可以使用聚合函数和var meetupDocument = connection.model('meetup', meetupSchema);
子句更轻松地完成此操作:
HAVING
我不确定为什么你的原始查询超时(除了你的表太大而不能及时返回该查询),但我注意到你没有语句终止符(用于PostgreSQL的分号)。几年后我还没有和PostgreSQL合作,所以我不记得是否要求,但我会加以确认。
答案 1 :(得分:0)
试一试。这将允许您带回所有ID,而不仅仅是具有多个值的三列。
SELECT x.* from mytablename x
INNER JOIN (
SELECT concat(y.name,'|',y.age,'|',y.city) as 'Fields'
FROM mytablename y
GROUP BY concat(y.name,'|',y.age,'|',y.city)
HAVING count(*) > 1
) y on concat(x.name,'|',x.age,'|',x.city) = y.Fields