是否可以比较同一MySQL表中的不同行?我想统计一下有多少用户更改了姓名。
这大概是我在MySQL日志表中得到的...
id userid name
1 1 Joe
2 1 Joe
3 1 Joe
4 2 Fiona
5 3 Mark
6 3 Marcel
7 3 Marcel
8 4 Mary
9 4 Marie
您可以看到即使Joe在日志表中3次,他的名字也没有改变。 “标记”更改为“马塞尔”,“玛丽”更改为“玛丽”。因此,如果这是整个表格,我想知道有2个人更改了他们的名字(四个人中的一个)。
SELECT userid, GROUP_CONCAT(name) FROM tablename GROUP BY userid ORDER BY userid DESC
我可以用脚本语言(PHP)检查输出,我只是想知道我在SQL中是否可以做些更整洁的事情,只给我改一下的名字。
我不确定这是否可行。尚未找到解决方案,如果重复,请告诉我。谢谢。
答案 0 :(得分:1)
如何使用HAVING
子句?
SELECT userid
FROM tablename
GROUP BY userid
HAVING MIN(name) <> MAX(name)
ORDER BY userid DESC;
如果您希望名称不重复:
SELECT userid, GROUP_CONCAT(DISTINCT name)
FROM tablename
GROUP BY userid
HAVING MIN(name) <> MAX(name)
ORDER BY userid DESC;