[英]MySQL Query - How get unique rows based on one column of multiple column inner join
我有一個查詢,它為組織選擇成員和他們所在的組。 所以一個成員可以在多個組中。 查詢的目的是獲取所選組中的所有成員。 但我只希望一個成員返回一次,以及一個組名。 我不想要他們所屬的所有組名。
例如下面是成員列表和他們所在的組:
Mbr組
1 -- G1
1 -- G2
2 -- G2
2 -- G3
3 -- G4
期望的結果是他們所在的一個成員和一個組:
1 -- G1
2 -- G2
3 -- G4
我有以下查詢工作,它為每個成員/組組合返回他們所在的成員和組的列表:
```
SELECT ogm.group_id, ogm.member_id,
FROM org_group_member ogm
INNER JOIN org_group og ON ogm.group_id
WHERE ogm.group_id IN ('1', '2', '3')
GROUP BY ogm.group_id, ogm.member_id
ORDER BY ogm.group_id
```
這導致了我在上面顯示的第一個列表。 但我想要想要的清單。
我知道如何將查詢限制為唯一的成員 ID,但我不知道如何僅包含組 ID。
我必須在查詢中添加什么才能獲得我想要的結果?
您可以使用聚合:
SELECT ogm.member_id, ANY_VALUE(ogm.group_id),
FROM org_group_member ogm JOIN
org_group og
ON ogm.group_id
WHERE ogm.group_id IN (1, 2, 3)
GROUP BY ogm.member_id;
請注意, group_id
可能是一個數字,這就是我刪除單引號的原因。 僅對字符串和日期常量使用單引號。
我找到了我的問題的答案。 我應該只在 GROUP BY 子句中包含 ogm.member_id。 然后我只讓每個成員在他們被發現的第一組中獲得一次。
SELECT ogm.group_id, ogm.member_id,
FROM org_group_member ogm
INNER JOIN org_group og ON ogm.group_id
WHERE ogm.group_id IN ('1', '2', '3')
GROUP BY ogm.member_id
ORDER BY ogm.group_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.