我可以比较同一个MySQL表(SQL)中的不同行吗

时间:2019-07-03 11:29:56

标签: mysql sql

是否可以比较同一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中是否可以做些更整洁的事情,只给我改一下的名字。

我不确定这是否可行。尚未找到解决方案,如果重复,请告诉我。谢谢。

1 个答案:

答案 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;