gpt4 book ai didi

mysql - 获取两个表之间的匹配行,否则在左表中获取 NULL

转载 作者:行者123 更新时间:2023-11-28 23:56:40 25 4
gpt4 key购买 nike

我有一个 MySQL sponsors 表,其中包含赞助商数据,还有一个 magazine_sponsors 表,说明哪些赞助商链接到特定杂志。

sponsors
-------------------------
| id | name |
-------------------------
| sponA | Sponsor A |
| sponB | Sponsor B |
| sponC | Sponsor C |
-------------------------

magazine_sponsors
----------------------------
| magazine_id | sponsor_id |
----------------------------
| magA | sponA |
| magA | sponB |
| magB | sponA |
----------------------------

我的目标是在给定一个特定的 magazine_id 的情况下显示可用赞助商的完整列表,说明哪些与该杂志有链接,哪些没有。例如,使用 magB 我想得到:

----------------------------------------
| magazine_id | sponsor_id | name |
----------------------------------------
| magB | sponA | Sponsor A |
| NULL | sponB | Sponsor B |
| NULL | sponC | Sponsor C |
----------------------------------------

我已经使用 RIGHT JOIN 尝试了以下查询:

SELECT * 
FROM magazine_sponsors ms
RIGHT JOIN sponsors s ON ms.sponsor_id=s.id
WHERE ms.magazine_id="magB"

但它只输出第一行。

----------------------------------------
| magazine_id | sponsor_id | name |
----------------------------------------
| magB | sponA | Sponsor A |
----------------------------------------

最佳答案

WHERE 中的条件是将 OUTER JOIN 转换为 INNER ONE。您需要将 OR ms.magazine_id IS NULL 添加到您的条件或将其移至 ON 子句:

SELECT * 
FROM sponsors s
LEFT JOIN magazine_sponsors ms ON ms.sponsor_id=s.id AND ms.magazine_id="magB"

关于mysql - 获取两个表之间的匹配行,否则在左表中获取 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com