关于表格为空时的JOIN为题

u010694762 2017-02-13 08:21:40
现在有两个表格,table1, table2,
我想得到
select a from table1
right join table2 on ...
但是有一种特殊情况就是如果table2为空的话,
需要返回table1的所有而不是一个空表,该怎么写呢
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010694762 2017-02-15
  • 打赏
  • 举报
回复
引用 4 楼 xpresslink 的回复:
[quote=引用 3 楼 u010694762 的回复:] [quote=引用 1 楼 xpresslink 的回复:] 改成 select a from table1 left join table2 on ...
可能我说的不太清楚,简而言之 1. 如果右边表格不空,取出inner join的结果 2. 如果右边表格为空,取出left join的结果[/quote] 你还是没有说清楚你的需求啊。也可能是你不明白 left join的功能。 left join 是以table1为基准的,即使table2为空, table1中的所有记录都会列出来的。 再说右边的表不为空也不一定有inner join的结果的,在左右表中有符合on table1.field = table2.field 条件时才会有inner join结果。[/quote] 是你没看懂我的要求,我已经找到我需要的了,多谢 http://stackoverflow.com/questions/15265146/sql-inner-join-2-tables-but-return-all-if-1-table-empty
混沌鳄鱼 2017-02-13
  • 打赏
  • 举报
回复
引用 3 楼 u010694762 的回复:
[quote=引用 1 楼 xpresslink 的回复:] 改成 select a from table1 left join table2 on ...
可能我说的不太清楚,简而言之 1. 如果右边表格不空,取出inner join的结果 2. 如果右边表格为空,取出left join的结果[/quote] 你还是没有说清楚你的需求啊。也可能是你不明白 left join的功能。 left join 是以table1为基准的,即使table2为空, table1中的所有记录都会列出来的。 再说右边的表不为空也不一定有inner join的结果的,在左右表中有符合on table1.field = table2.field 条件时才会有inner join结果。
u010694762 2017-02-13
  • 打赏
  • 举报
回复
引用 1 楼 xpresslink 的回复:
改成 select a from table1 left join table2 on ...
可能我说的不太清楚,简而言之 1. 如果右边表格不空,取出inner join的结果 2. 如果右边表格为空,取出left join的结果
u010694762 2017-02-13
  • 打赏
  • 举报
回复
引用 1 楼 xpresslink 的回复:
改成 select a from table1 left join table2 on ...
多谢回答,我想要的结果是两个表格中有一个字段相同的部分,(类似于inner join),但是当右边的表格为空时,就需要左边表格 的全部。 不是left join的运算。 我在想怎么用CASE WHEN来实现
混沌鳄鱼 2017-02-13
  • 打赏
  • 举报
回复
改成 select a from table1 left join table2 on ...

952

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧