tsql : Access query to TSQL union update conversion correct?

标签 tsql union

我在访问中有一个查询,我需要将其转换为 sql server 2005 中的存储过程。
access中查询如下:

UPDATE 
tblitem, 
tblFileSignature 
SET 
tblitem.strFileProcesstype = [tblFileSignature].[STRFILEPROCESSTYPE], tblitem.strFileSignatureType = [tblFileSignature].[strfilesignaturetype]
WHERE 
(((tblitem.strFileSignatureType) Is Null) AND 
((tblitem.strFileExclude)="n") AND 
((InStr([tblitem].[strfilesignature],[tblFileSignature].[strsignature]))=1) AND ((tblitem.uidItemType)=1 Or (tblitem.uidItemType)=5) AND 
((tblitem.uidCollection)=[forms]![frmSetup]![txtInputCol]) AND ((tblitem.strFileSignature) Not Like "d0c*") AND 
((tblFileSignature.strFileProcessType) Not Like "ZIP"));

在 tsql 中..这会一样吗?

update tblItem 
set 
i.strFileProcesstype = f.strFileProcesstype,
i.strFileSignatureType = f.strfilesignaturetype 

from tblItem as I UNION tblFileSignature as F 

WHERE (((i.strFileSignatureType) Is Null) AND 
((i.strFileExclude)="n") AND 
((i.[strfilesignature] like F.strsignature)) AND 
((i.uidItemType)=1 Or 
(i.uidItemType)=5) AND 
((i.uidCollection)=@inputcolumn AND 
((i.strFileSignature) Not Like 'd0c%') AND 
((F.strFileProcessType) Not Like 'ZIP'));

提前致谢

更新:

所以我要进行以下操作。如果我取消注释 declare 和 select 子句并只是从 declare 向下执行,它会运行,如果我注释 declare 和 select 部分,它会在“;”附近显示错误。

UPDATE I  
SET 
    I.strFileProcesstype = F.STRFILEPROCESSTYPE, 
    I.strFileSignatureType = F.strfilesignaturetype
--declare @uidcollectionID int
--select I.strFileSignatureType
from 
tblItem I
    inner join tblFileSignature F
on 
I.strfilesignature = left(F.strsignature,len(I.strfilesignature))

WHERE I.strFileSignatureType Is Null 
    AND I.strFileExclude='n' 
    AND I.uidItemType in (1,5) 
    AND I.uidCollection = @uidCollectionID
    AND left(I.strFileSignature,3) <> 'd0c' 
    AND F.strFileProcessType <> 'ZIP';

有什么想法吗?

最佳答案

你应该改变

  • 双引号单引号
  • *%
  • LIKE替换InStr

除此之外,我觉得还不错。

关于tsql : Access query to TSQL union update conversion correct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3924481/

相关文章:

mysql - 打印嵌套 Left Join + Union MySQL 查询中的所有行

mysql - 我如何查询拆分为 2 个较小表的表?联盟?看法?

sql-server - 在SQL中获取最近的较高和较低的行

sql - 如何在 SQL Server 2008 的 T-SQL 中比较两个字符串是否包含相同的单词?

tsql - SQLCMD 模式 : Environment variable syntax

sql-server - SQL Server 查询优化 : Where (Col=@Col or @Col=Null)

SQL - 如何通过连接将不同表中的 2 个日期合并在一起而不会出现错误

sql - 使用生产日期表添加缺失的行

sql - 从 SQL 中的 Select 语句分配 INT 变量

mysql union 没有按预期工作