簡體   English   中英

MySQL 查詢 - 如何根據多列內連接的一列獲取唯一行

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

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