标签: sql-server

参数化SQL IN子句

如何参数化包含IN具有可变数量参数的子句的查询,比如这个?

SELECT * FROM Tags 
WHERE Name IN ('ruby','rails','scruffy','rubyonrails')
ORDER BY Count DESC
Run Code Online (Sandbox Code Playgroud)

在此查询中,参数的数量可以是1到5之间的任何值.

我不希望为此(或XML)使用专用存储过程,但如果有一些特定于SQL Server 2008的优雅方式,我对此持开放态度.

sql sql-server parameters

1020
推荐指数
29
解决办法
33万
查看次数

JOIN和INNER JOIN之间的区别

这两个连接都会给我相同的结果:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
Run Code Online (Sandbox Code Playgroud)

VS

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Run Code Online (Sandbox Code Playgroud)

表现或其他方面的陈述是否有任何区别?

不同的SQL实现之间是否有所不同?

sql sql-server join inner-join

925
推荐指数
6
解决办法
57万
查看次数

什么时候应该使用交叉申请而不是内部联接?

使用CROSS APPLY的主要目的是什么?

我已经阅读(模糊地,通过互联网上的帖子),cross apply如果你正在进行分区,那么在选择大型数据集时可以更有效率.(寻找灵感)

我也知道CROSS APPLY 不需要UDF作为右表.

在大多数INNER JOIN查询(一对多关系)中,我可以重写它们以供使用CROSS APPLY,但它们总是给我相同的执行计划.

任何人都可以给我一个很好的例子,告诉我什么时候能有效的CROSS APPLY情况INNER JOIN


编辑:

这是一个简单的例子,执行计划完全相同.(告诉我一个他们不同的地方,哪里cross apply更快/更有效率)

create table Company (
    companyId int identity(1,1)
,   companyName varchar(100)
,   zipcode varchar(10) 
,   constraint PK_Company primary key (companyId)
)
GO

create table Person (
    personId int identity(1,1)
,   personName varchar(100)
,   companyId int
,   constraint FK_Person_CompanyId foreign key (companyId) references dbo.Company(companyId)
,   constraint PK_Person primary key (personId)
) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server performance cross-apply

890
推荐指数
11
解决办法
68万
查看次数

基于ID匹配从一个表到另一个表的SQL更新

我有一个带account numbers和的数据库card numbers.我将这些文件与update任何卡号匹配到帐号,以便我只使用帐号.

我创建了一个视图链接表和帐户/卡数据库以返回Table ID相关的帐号,现在我需要更新ID与帐号匹配的记录.

这是Sales_Import表,account number需要更新字段:

LeadID  AccountNumber
147         5807811235
150         5807811326
185         7006100100007267039
Run Code Online (Sandbox Code Playgroud)

这是RetrieveAccountNumber表,我需要更新:

LeadID  AccountNumber
147         7006100100007266957
150         7006100100007267039
Run Code Online (Sandbox Code Playgroud)

我试过以下,但到目前为止没有运气:

UPDATE [Sales_Lead].[dbo].[Sales_Import] 
SET    [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber 
                          FROM   RetrieveAccountNumber 
                          WHERE  [Sales_Lead].[dbo].[Sales_Import]. LeadID = 
                                                RetrieveAccountNumber.LeadID) 
Run Code Online (Sandbox Code Playgroud)

它将卡号更新为帐号,但帐号被替换为 NULL

sql sql-server select join sql-update

885
推荐指数
18
解决办法
167万
查看次数

如何在SQL Server中转义单引号?

我正在尝试将insert一些文本数据放入SQL Server9中的表中.

该文本包括单引号(').

我怎么逃避?

我尝试使用两个单引号,但它给我一些错误.

例如. insert into my_table values('hi, my name''s tim.');

sql t-sql sql-server delimiter single-quotes

882
推荐指数
7
解决办法
103万
查看次数

如何使用TSQL获取数据库中所有表的列表?

获取SQL Server上特定数据库中所有表的名称的最佳方法是什么?

t-sql sql-server database-table

867
推荐指数
14
解决办法
173万
查看次数

如何使用T-SQL临时禁用外键约束?

是否禁用和启用SQL Server支持的外键约束?或者是我唯一的选择drop,然后重新create约束?

t-sql sql-server constraints foreign-keys

805
推荐指数
10
解决办法
59万
查看次数

在SQL Server中使用JOIN更新表?

我想更新表中的列,在其他表上进行连接,例如:

UPDATE table1 a 
INNER JOIN table2 b ON a.commonfield = b.[common field] 
SET a.CalculatedColumn= b.[Calculated Column]
WHERE 
    b.[common field]= a.commonfield
AND a.BatchNO = '110'
Run Code Online (Sandbox Code Playgroud)

但它抱怨:

消息170,级别15,状态1,行2
第2行:'a'附近的语法不正确.

这有什么不对?

t-sql sql-server join sql-update

804
推荐指数
5
解决办法
90万
查看次数

SQL Server中的函数与存储过程

我一直在学习函数和存储过程很长一段时间,但我不知道为什么以及何时应该使用函数或存储过程.他们看起来和我一样,也许是因为我对此有点新手.

有人可以告诉我为什么吗?

sql t-sql sql-server stored-procedures sql-function

801
推荐指数
13
解决办法
64万
查看次数

我应该使用!=或<>在T-SQL中不相等吗?

我已经看到了SQL同时使用!=,并<>不相等.什么是首选语法,为什么?

我喜欢!=,因为<>让我想起Visual Basic.

sql t-sql sql-server

780
推荐指数
11
解决办法
102万
查看次数