簡體   English   中英

SQL查詢組的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM