繁体   English   中英

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

[英]Can I compare different rows in the same MySQL table (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次,他的名字也没有改变。 “标记”更改为“马塞尔”,“玛丽”更改为“玛丽”。 因此,如果这是整个表格,我想知道有两个人更改了姓名(四个)。

SELECT userid, GROUP_CONCAT(name) FROM tablename GROUP BY userid ORDER BY userid  DESC

我可以使用脚本语言(PHP)检查输出,我只是想知道我在SQL中是否可以做些更整洁的事情,只给我改过的名字。

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

如何使用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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM