这样的SQL语句怎样写比较好?

IE11下面经常卡到爆 2011-10-14 09:42:52
需求:
以下为方便描述,其他用来提取内容的N多字段,这里略去
有一个表l(其实它也是由另外两个表Join得到的,查得的纪录数最多几十条),字段如下
PK FK1 FK2 Status(取值是经过CASE WHEN得到的0或1)
当Status=1时,l表需要JOIN表d 取得d中的一些信息
当Status=0时,l表需要JOIN表m 取得m中的一些信息

两种情况下,由于最后要取得的字段完全一样,目前的想法是用Union All
不知道有没更好的方法,数据库是别人的SQL2000,所以最好是用SQL语句
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
既然大牛都这么说,看来也只能这样了
谢谢,结帖
--小F-- 2011-10-14
  • 打赏
  • 举报
回复
union all 在某些时候可以利用到索引
薇薇 2011-10-14
  • 打赏
  • 举报
回复

先全部连接起来,然后再进行筛选
如果用联合的话,效率不高
唐诗三百首 2011-10-14
  • 打赏
  • 举报
回复
用union all

另:可以先把表1的查询结果放进临时表.
chuanzhang5687 2011-10-14
  • 打赏
  • 举报
回复
union all
geniuswjt 2011-10-14
  • 打赏
  • 举报
回复
union all满好的
-晴天 2011-10-14
  • 打赏
  • 举报
回复
union all
就是最好的方法.
你总是三个表进行连接,与其写一个复杂的根据条件来实现三个表的连接的语句,不如用联合,简单明了.
一定要三表连也行:
select a.pk,a.fk1,a.fk2,a.status,
(case when a.status=1 then b.other else c.other) as other
from l a left join d b on a.XX=b.XX
left join m c on a.XX=c.XX

22,207

社区成员

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

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