现实生活中,每个人都有可能存在多个电话号码,可能是移动,可能是联通,或者电信。
现在一家公司的一个user表里,有id、name、phone
但是phone保存的电话号码,并没有把移动、联通、电信等电话号码分开
出现问题:一个用户可能多次出现在这个user表里,例如:
id name phone
1 小明 123
2 小明 456
3 小明 789
公司需求:要求你用SQL语句查出拥有多个电话的人名
具体要求:
1.只有一个电话号码的人名,我不要
2.我要有多个电话号码的人名
3.sql展示为 name phone phone phone
例: 小明 123 456 789
答案:
SELECT name,GROUP_CONCAT(phone)
FROM user
WHERE
NAME IN (
SELECT
name
FROM
user
GROUP BY
name
HAVING
COUNT(name) > 1
)
GROUP BY
name;
新问题:如何优化这条SQL语句(待续)