sql – 你如何做许多到多个表外连接?

前端之家收集整理的这篇文章主要介绍了sql – 你如何做许多到多个表外连接?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有3个表,foo,foo2bar和bar. foo2bar是foo和bar之间的很多地图.这里是内容.
  1. select * from foo
  2. +------+
  3. | fid |
  4. +------+
  5. | 1 |
  6. | 2 |
  7. | 3 |
  8. | 4 |
  9. +------+
  10.  
  11. select * from foo2bar
  12. +------+------+
  13. | fid | bid |
  14. +------+------+
  15. | 1 | 1 |
  16. | 1 | 2 |
  17. | 2 | 1 |
  18. | 2 | 3 |
  19. | 4 | 4 |
  20. +------+------+
  21.  
  22. select * from bar
  23. +------+-------+------+
  24. | bid | value | zid |
  25. +------+-------+------+
  26. | 1 | 2 | 10 |
  27. | 2 | 4 | 20 |
  28. | 3 | 8 | 30 |
  29. | 4 | 42 | 30 |
  30. +------+-------+------+

我想要的是,“给我一个所有的fid和值的列表,带有30”

我期待所有的fids的答案,所以结果将是:

  1. +------+--------+
  2. | fid | value |
  3. +------+--------+
  4. | 1 | null |
  5. | 2 | 8 |
  6. | 3 | null |
  7. | 4 | 42 |
  8. +------+--------+

解决方法

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

测试MysqL 5.0.51.

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

猜你在找的MsSQL相关文章