[英]SQL query group by results
Im quite new for all the hibernate and SQL scopes, so forgive me for the silly question. 我对所有的hibernate和SQL范围都很新,所以请原谅我这个愚蠢的问题。
I want to make a sql query using hibernate which will group all the results by the groupUserName. 我想使用hibernate进行sql查询,它将使用groupUserName对所有结果进行分组。
I have the following tables in my DB: 我的数据库中有以下表格:
ms_GroupUser: ms_GroupUser:
+-------------+---------------+----------+---------+
| groupUserId | groupUserName | password | groupId |
+-------------+---------------+----------+---------+
| 1 | Alice | 123456 | 1 |
| 2 | BOB | 654321 | 1 |
| 3 | BOB | 654321 | 2 |
| 4 | Charlie | 654321 | 1 |
+-------------+---------------+----------+---------+
ms_Group: ms_Group:
+---------+-----------+--------+----------------+------------+
| groupId | groupName | system | systemHostName | systemPort |
+---------+-----------+--------+----------------+------------+
| 1 | TEST | FOO | 1.1.1.1 | 8080 |
| 2 | TEST2 | FOO | 1.1.1.1 | 8080 |
+---------+-----------+--------+----------------+------------+
My Query is: 我的查询是:
SELECT groupt.groupname,
usert.groupusername
FROM ms_group AS groupt,
ms_groupuser AS usert
WHERE groupt.groupid = usert.groupid
AND usert.password = '654321'
GROUP BY usert.groupusername
I expect it will bring me back as a result this bag: 我希望它会让我回到这个包里:
BOB -> TEST, TEST2.
BOB - > TEST,TEST2。
Charlie -> TEST.
查理 - >测试。
What it is actually bring back is: 实际带来的是:
BOB -> TEST.
BOB - > TEST。
Charlie -> TEST.
查理 - >测试。
Where is TEST2? TEST2在哪里?
Can you please help me? 你能帮我么? am I miss understood something?
我想念一些东西吗?
Thank you very much! 非常感谢你!
SELECT groupUserName,groupName
FROM ms_GroupUser u, ms_group g
WHERE g.groupId=u.groupId
AND u.password=654321
Output 产量
| GROUPUSERNAME | GROUPNAME |
|---------------|-----------|
| BOB | TEST |
| BOB | TEST2 |
| Charlie | TEST |
Edit 编辑
Based upon your question in comments 根据您在评论中提出的问题
SELECT groupUserName,GROUP_CONCAT(groupName)
FROM ms_GroupUser u, ms_group g
WHERE g.groupId=u.groupId AND u.password=654321
GROUP BY groupUserName
Output 产量
| GROUPUSERNAME | GROUP_CONCAT(GROUPNAME) |
|---------------|-------------------------|
| BOB | TEST,TEST2 |
| Charlie | TEST |
Just simply add "groupt.groupName" in the group by. 只需在组中添加“groupt.groupName”即可。 So the code will become like this
所以代码将变成这样
SELECT groupt.groupName,
usert.groupUserName
FROM Group1 AS groupt,
GroupUser AS usert
WHERE groupt.groupId = usert.groupId
AND usert.password = '654321'
GROUP BY groupt.groupName,
usert.groupUserName;
SELECT A.groupUserName,B.groupName
FROM ms_GroupUser A LEFT JOIN ms_Group B
ON A.groupID=B.groupID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.