探讨"INNER JOIN (SELECT * FROM A)"与"INNER JOIN A"的区别

布谷歌 2008-09-09 05:00:31
SELECT 列字段
INTO #SALINFO
FROM DeptAll('1', @USEYN) A
INNER JOIN
(
SELECT * FROM
(
SELECT DISTINCT TOP 100 PERCENT 列字段
FROM
(SELECT * FROM @TBLGOAL) B
INNER JOIN COMDB..CODE_H C1 ON ...
INNER JOIN COMDB..CODE_H C2 ON ...
GROUP BY 列字段
) S
) S ON ...


就这个sql语句,大家帮忙看下(SELECT * FROM @TBLGOAL)有什么作用?为什么不直接用@TBLGOAL?
同样的还有inner join select* from S 为什么不直接inner join S 呢?
当然,我知道它们的结果是一样的.但是还有什么区别呢?
...全文
1395 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
football 2008-09-17
  • 打赏
  • 举报
回复
样的还有inner join select* from S 为什么不直接inner join S 呢?

inner join S 应该好于inner join select* from S

后面的写法应该效率低一些,会多遍立一次S表
  • 打赏
  • 举报
回复
大家帮忙看下(SELECT * FROM @TBLGOAL)有什么作用?为什么不直接用@TBLGOAL?
同样的还有inner join select* from S 为什么不直接inner join S 呢?

觉得这个还是要看个人习惯吧。觉得 select * from @tblgoal t 比select * from (select * from @tblgoal) t
好一点,至少少了一次查询,效率上能好一点,并且语句能简洁一点,
当然结果是一样的。
cyc_cheng 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 szx1999 的回复:]
画蛇添足。
谁写的,拖出去切JJ
[/Quote]
木JJ的怎么办
fcuandy 2008-09-17
  • 打赏
  • 举报
回复
无区别
Garnett_KG 2008-09-17
  • 打赏
  • 举报
回复

在大多数情况下,两者没有任何区别

产生的执行计划都一致。
hyde100 2008-09-17
  • 打赏
  • 举报
回复
(SELECT * FROM @TBLGOAL)有什么作用?为什么不直接用@TBLGOAL?
---------------------------------------------------------
@TBLGOAL是个table变量吧?table变量在sql中是个变量,是不能用来连接的除非再选择一次(SELECT * FROM @TBLGOAL)形成结果集再来连接。
所以当结果需要连接的话把结果存储在table变量是是比较麻烦。最好用零时表什么的
等不到来世 2008-09-17
  • 打赏
  • 举报
回复
画蛇添足。
谁写的,拖出去切JJ
lfywy 2008-09-10
  • 打赏
  • 举报
回复
一样
utpcb 2008-09-10
  • 打赏
  • 举报
回复
没考虑过你自己看看执行计划先
jinjazz 2008-09-10
  • 打赏
  • 举报
回复
加或者不加这个嵌套运行效果是一样的
zzxap 2008-09-10
  • 打赏
  • 举报
回复
inner join的效率更高
jw722 2008-09-09
  • 打赏
  • 举报
回复
我也想知道区别,经常看到有人这么用,但不知道到底有什么好处?
水族杰纶 2008-09-09
  • 打赏
  • 举报
回复
inner join(等值连接) 只返回两个表中联结字段相等的行
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

22,209

社区成员

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

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