【发布时间】:2021-06-16 07:52:06
【问题描述】:
我有两个表如下
用户表
| user_id | name |
|---|---|
| 1 | zia |
| 2 | john |
| 3 | raza |
主题表
| data_id | user_id | subject |
|---|---|---|
| 1 | 1 | Math |
| 2 | 1 | Chem |
| 3 | 1 | Bio |
| 4 | 2 | Math |
| 5 | 2 | Phy |
当我查询数据时,我得到如下结果:
[
{
"user_id": "1",
"name": "zia",
"subject": [
"Math",
"Chem",
"Bio"
]
},
{
"user_id": "2",
"name": "john",
"subject": [
"Math",
"Phy"
]
},
]
我的查询如下
SELECT
users.user_id,
users.name,
GROUP_CONCAT(subjects.subject) sub
FROM
`users`
INNER JOIN subjects ON users.user_id = subjects.user_id
GROUP BY
subjects.user_id;
但实际上我想通过以下方式获取数据:
上面显示的结果是这样的,如果用户表中的条目在主题表中没有对应的条目,那么我们的结果中必须有用户名和用户 ID,如下所示
[
{
"user_id": "1",
"name": "zia",
"subject": [
"Math",
"Chem",
"Bio"
]
},
{
"user_id": "2",
"name": "john",
"subject": [
"Math",
"Phy"
]
},
{
"user_id": "3",
"name": "Raza",
}
]
如您所见,我们的数据方式是,如果用户表中的所有输入项与主题表中的主题输入项匹配,则它们会与主题输入项一起显示,否则每个用户表输入项都将显示没有任何影响。
*请帮我解决这个问题**
【问题讨论】:
-
您可能需要使用 LEFT JOIN 而不是 INNER JOIN,因为您也想检索没有主题的用户
-
我会把它作为解决方案发布
标签: mysql