gpt4 book ai didi

sql - 你如何进行多对多表外连接?

转载 作者:行者123 更新时间:2023-12-03 21:21:59 25 4
gpt4 key购买 nike

我有 3 张 table ,foo、foo2bar 和 bar。 foo2bar 是 foo 和 bar 之间的多对多映射。以下是内容。

select * from foo
+------+
| fid |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+

select * from foo2bar
+------+------+
| fid | bid |
+------+------+
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 3 |
| 4 | 4 |
+------+------+

select * from bar
+------+-------+------+
| bid | value | zid |
+------+-------+------+
| 1 | 2 | 10 |
| 2 | 4 | 20 |
| 3 | 8 | 30 |
| 4 | 42 | 30 |
+------+-------+------+

我想要请求的是,“给我一个 zid 为 30 的所有 fid 和值的列表”

我期待所有 fid 的答案,所以结果看起来像:
+------+--------+
| fid | value |
+------+--------+
| 1 | null |
| 2 | 8 |
| 3 | null |
| 4 | 42 |
+------+--------+

最佳答案

SELECT * FROM foo
LEFT OUTER JOIN (foo2bar JOIN bar ON (foo2bar.bid = bar.bid AND zid = 30))
USING (fid);

在 MySQL 5.0.51 上测试。

这不是子查询,它只是使用括号来指定连接的优先级。

关于sql - 你如何进行多对多表外连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/372399/

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