mysql 选择所有组并检查用户是否在组中

juzqafwq  于 2023-02-03  发布在  Mysql
关注(0)|答案(1)|浏览(104)

我有两个表groupsgroups_members

| 身份证|姓名|
| - ------|- ------|
| 1个|第1组|
| 第二章|第2组|
| 三个|第2组|

组_成员

| 组标识|用户标识|
| - ------|- ------|
| 1个|一百二十三|
| 第二章|一百二十三|
| 第二章|五百五十五|
| 1个|小行星4643|
| 三个|小行星45434|
现在我想显示所有组,并检查显示组的用户(比如user_id = 555)是否在组中。

SELECT g.id, g.name, is_in_group 
FROM g.groups 
JOIN groups_members gm ON gm.user_id = 555

预期产出:
| 身份证|姓名|在组中|
| - ------|- ------|- ------|
| 1个|第1组|零|
| 第二章|第2组|1个|
| 三个|第3组|零|

voase2hg

voase2hg1#

你有几种方法来做到这一点,一个简单的技巧,来到我的脑海是这一个:

SELECT 
  g.*, 
  CAST(gm.user_id / gm.user_id AS UNSIGNED) AS is_in_group
FROM sgroups AS g
LEFT JOIN sgroups_members AS gm 
  ON g.id = gm.group_id 
  AND gm.user_id = 555;

-- id   name        is_in_group
-- 1    GROUP 1     NULL
-- 2    GROUP 2     1
-- 3    GROUP 3     NULL

相关问题