【发布时间】:2021-12-30 23:12:20
【问题描述】:
我在查询中使用 CONCAT 时遇到了麻烦,我将人员的名字和姓氏组合在一起,然后查找具有相同名字和姓氏的其他记录。
(我想把所有找到的 id 放在一个 PHP 数组中以备后用。)
问题
我似乎无法跳过 GROUP BY。该查询给出了找到的双打的正确计数,但我需要所有单独的记录(id 的 + 其他字段)。 MySQL 说我不能使用“全名”,因为它不是列。我明白了,但我正在寻找这种组合。
当使用其他查询时,我不断得到结果,它在名字和姓氏上都列出了双精度 - 我希望它在 CONCAT 全名上。
代码
SELECT
id,firstname,lastname,artistname, CONCAT(firstname,' ', lastname) as fullname, COUNT(lastname)
FROM
table
GROUP BY
fullname
HAVING
(COUNT(lastname) > 1)
所以,代码有效,但我想列出所有单独的记录。
非常感谢任何帮助我走上正确道路的帮助。
【问题讨论】:
-
您的查询
group by对标准SQL 无效,请参阅mysql_only_full_group_by,但是您可以在group by中重复CONCAT(firstname,' ', lastname) -
很好的信息,但它仍然不会只选择具有相同名字和姓氏的人。它现在给出相同姓氏的结果。
-
在您的问题中添加一些示例数据和所需的结果。如果您使用的是 MySql 8+,则可以使用
count() over a window
标签: mysql concatenation