小编ano*_*xen的帖子

存在/不存在:'select 1'vs'select field'

两者中哪一个表现更好(我最近被指责不小心我的代码,因为我在Oracle中使用了后者):

Select * 
from Tab1
Where (not) exists(Select 1 From Tab2 Where Tab1.id = Tab2.id)


Select * 
from Tab1
Where (not) exists(Select Field1 From Tab2 Where Tab1.id = Tab2.id)
Run Code Online (Sandbox Code Playgroud)

或者他们俩都一样?

请从SQL Server透视图和Oracle透视图中回答这两个问题.

我用google搜索(主要来自sql-server方面)并发现对此仍存在很多争论,尽管我现在的意见/假设是RDMBS中的优化者已经足够成熟,可以理解子查询所需要的只是布尔值.

sql sql-server oracle exists

16
推荐指数
2
解决办法
2万
查看次数

为什么这个Where子句中的空格不会导致语法错误?

以下三个Select查询,无论Where子句在表别名和列名之间有多余空格,都会产生相同的结果.他们都有相同的执行计划.为什么空格的存在不会引发语法错误?

DECLARE @TblX TABLE(
    ColX int
    ,ColY float
    )

-----As it normally should be
SELECT *
FROM @TblX X
WHERE X.ColX = 1

----Even this works
SELECT *
FROM @TblX X
WHERE X .ColX = 1

----And this too
SELECT *
FROM @TblX X
WHERE X. ColX = 1
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2012

13
推荐指数
1
解决办法
498
查看次数

使用 try-catch 块删除 Sql-Server 中的表

下面的代码有效并且非常精确,但是与其他“标准”方式相比,这样做可以吗?

--Drop table if exists
begin try
    drop table #temp
end try

begin catch 
    print 'table does not exist'
end catch

--Create table
create table #temp(a int, b int)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

3
推荐指数
1
解决办法
1850
查看次数

标签 统计

sql-server ×3

sql ×2

t-sql ×2

exists ×1

oracle ×1

sql-server-2012 ×1