sql – 你如何做许多到多个表外连接?
发布时间:2020-12-12 16:39:55 所属栏目:MsSql教程 来源:网络整理
导读:我有3个表,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 |
我有3个表,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 | +------+-------+------+ 我想要的是,“给我一个所有的fid和值的列表,带有30” 我期待所有的fids的答案,所以结果将是: +------+--------+ | 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. 这不是一个子查询,它只是使用括号来指定连接的优先级. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |