[英]SQL query group by results
我對所有的hibernate和SQL范圍都很新,所以請原諒我這個愚蠢的問題。
我想使用hibernate進行sql查詢,它將使用groupUserName對所有結果進行分組。
我的數據庫中有以下表格:
ms_GroupUser:
+-------------+---------------+----------+---------+
| groupUserId | groupUserName | password | groupId |
+-------------+---------------+----------+---------+
| 1 | Alice | 123456 | 1 |
| 2 | BOB | 654321 | 1 |
| 3 | BOB | 654321 | 2 |
| 4 | Charlie | 654321 | 1 |
+-------------+---------------+----------+---------+
ms_Group:
+---------+-----------+--------+----------------+------------+
| groupId | groupName | system | systemHostName | systemPort |
+---------+-----------+--------+----------------+------------+
| 1 | TEST | FOO | 1.1.1.1 | 8080 |
| 2 | TEST2 | FOO | 1.1.1.1 | 8080 |
+---------+-----------+--------+----------------+------------+
我的查詢是:
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
我希望它會讓我回到這個包里:
BOB - > TEST,TEST2。
查理 - >測試。
實際帶來的是:
BOB - > TEST。
查理 - >測試。
TEST2在哪里?
你能幫我么? 我想念一些東西嗎?
非常感謝你!
SELECT groupUserName,groupName
FROM ms_GroupUser u, ms_group g
WHERE g.groupId=u.groupId
AND u.password=654321
產量
| GROUPUSERNAME | GROUPNAME |
|---------------|-----------|
| BOB | TEST |
| BOB | TEST2 |
| Charlie | TEST |
編輯
根據您在評論中提出的問題
SELECT groupUserName,GROUP_CONCAT(groupName)
FROM ms_GroupUser u, ms_group g
WHERE g.groupId=u.groupId AND u.password=654321
GROUP BY groupUserName
產量
| GROUPUSERNAME | GROUP_CONCAT(GROUPNAME) |
|---------------|-------------------------|
| BOB | TEST,TEST2 |
| Charlie | TEST |
只需在組中添加“groupt.groupName”即可。 所以代碼將變成這樣
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.