查找重复的连接值
Find duplicate concat values
我正在尝试在 MySQL 数据库中查找包含重复项的每一行。
1 alex smith
2 bob smith
3 alex smith
我想return:
1 alex smith
3 alex smith
此代码将查找重复项,但不会列出重复的每一行。
SELECT
*,
CONCAT(`firstName`, ' ', `lastName`) as full_name,
COUNT(*) d
FROM users
GROUP BY full_name
HAVING d > 1;
下面的代码是我试图获取重复的每一行的代码,但我收到错误“#1054 - 'IN/ALL/ANY subquery' 中的未知列 'full_name'”
SELECT CONCAT(`firstName`, ' ', `lastName`) as full_name
FROM users
WHERE full_name IN (
SELECT CONCAT(`firstName`, ' ', `lastName`) as full_name
FROM users
GROUP BY full_name
HAVING COUNT(full_name) > 1
)
您不能在 WHERE 子句中使用别名;而且您实际上并不需要 CONCAT (在这种情况下它会增加您的计算成本);相反,您可以比较 "tuples".
SELECT *
FROM users
WHERE (`firstName`, `lastName`) IN (
SELECT `firstName`, `lastName`
FROM users
GROUP BY `firstName`, `lastName`
HAVING COUNT(*) > 1
);
我正在尝试在 MySQL 数据库中查找包含重复项的每一行。
1 alex smith
2 bob smith
3 alex smith
我想return:
1 alex smith
3 alex smith
此代码将查找重复项,但不会列出重复的每一行。
SELECT
*,
CONCAT(`firstName`, ' ', `lastName`) as full_name,
COUNT(*) d
FROM users
GROUP BY full_name
HAVING d > 1;
下面的代码是我试图获取重复的每一行的代码,但我收到错误“#1054 - 'IN/ALL/ANY subquery' 中的未知列 'full_name'”
SELECT CONCAT(`firstName`, ' ', `lastName`) as full_name
FROM users
WHERE full_name IN (
SELECT CONCAT(`firstName`, ' ', `lastName`) as full_name
FROM users
GROUP BY full_name
HAVING COUNT(full_name) > 1
)
您不能在 WHERE 子句中使用别名;而且您实际上并不需要 CONCAT (在这种情况下它会增加您的计算成本);相反,您可以比较 "tuples".
SELECT *
FROM users
WHERE (`firstName`, `lastName`) IN (
SELECT `firstName`, `lastName`
FROM users
GROUP BY `firstName`, `lastName`
HAVING COUNT(*) > 1
);