在查询之前预先对查询中的内容进行处理。当某一条件符合时使用左连接查询最终的数据,条件不符合用右连接查询最终的数据

微瞰技术
博客专家认证
2017-08-16 02:23:24
在查询之前预先对查询中的内容进行处理。当某一条件符合时使用左连接查询最终的数据,条件不符合用右连接查询最终的数据
...全文
208 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-08-16
  • 打赏
  • 举报
回复
引用 7楼我是你的主体 的回复:
[quote=引用 2 楼 sinat_28984567 的回复:] 大概这样写:
SELECT  a.* ,
        CASE WHEN a.type = 1 THEN b.id
             ELSE c.id
        END AS otherid
FROM    a
        LEFT JOIN b ON a.id = b.id
        RIGHT JOIN c ON a.id = c.id
这个是既有right也有left了。 [/quote]那应该是通过判断来连接不同的表
繁花尽流年 2017-08-16
  • 打赏
  • 举报
回复
引用 5 楼 u011342403 的回复:
[quote=引用 1 楼 zengertao 的回复:] case when 就可以满足了啊
Casewhen是针对的单个字段。。我想针对的是所有结果。。[/quote] 其实核心还是case只不过使用了很多次而已。除非你的数据结果不是穿插交替出现的,那么一个大的if else处理就好了。
微瞰技术 2017-08-16
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
大概这样写:
SELECT  a.* ,
        CASE WHEN a.type = 1 THEN b.id
             ELSE c.id
        END AS otherid
FROM    a
        LEFT JOIN b ON a.id = b.id
        RIGHT JOIN c ON a.id = c.id
这个是既有right也有left了。
微瞰技术 2017-08-16
  • 打赏
  • 举报
回复
引用 3 楼 yupeigu 的回复:
这个用动态语句来实现比较好,相当于你生成的语句不是静态的,而是要先看数据是否符合要求,然后语句进行相应的变化
对的。。我去查查动态语句、。
微瞰技术 2017-08-16
  • 打赏
  • 举报
回复
引用 1 楼 zengertao 的回复:
case when 就可以满足了啊
Casewhen是针对的单个字段。。我想针对的是所有结果。。
OwenZeng_DBA 2017-08-16
  • 打赏
  • 举报
回复
引用 楼主 u011342403 的回复:
在查询之前预先对查询中的内容进行处理。当某一条件符合时使用左连接查询最终的数据,条件不符合用右连接查询最终的数据
有具体的数据就贴具体的数据上来,别人更好解答问题
LongRui888 2017-08-16
  • 打赏
  • 举报
回复
这个用动态语句来实现比较好,相当于你生成的语句不是静态的,而是要先看数据是否符合要求,然后语句进行相应的变化
二月十六 2017-08-16
  • 打赏
  • 举报
回复
大概这样写:
SELECT  a.* ,
CASE WHEN a.type = 1 THEN b.id
ELSE c.id
END AS otherid
FROM a
LEFT JOIN b ON a.id = b.id
RIGHT JOIN c ON a.id = c.id
繁花尽流年 2017-08-16
  • 打赏
  • 举报
回复
case when 就可以满足了啊

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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