SQL SERVER多列子查询
来源:互联网 发布:贵阳大数据展示中心 编辑:程序博客网 时间:2024/05/21 06:26
今天,写导入数据的存储过程时,用到多列子查询,想把临时表里有的,而原表里没有的数据插入到原表里面。原表里若有了,就不用再插入了。
我当时这样写的:
USE SUBJECTDB_DATA;
BEGIN TRAN;
INSERT INTO SUBJECTDB.ProDefine.Project_Corporation
SELECT pro.CODE,COR.CODE
FROM BDD_PROJECTINFO_INSERT INS
LEFT JOIN SUBJECTDB.PRODEFINE.Corporation COR ON INS.所属法人公司=COR.CNNAME
LEFT JOIN SubjectDB.ProDefine.ProjectInfo pro ON INS.项目名称=PRO.CNNAME
WHERE (PRO.CODE,cor.code) NOT IN (SELECT (PROJECTCODE,CorperationCode) FROM SUBJECTDB.ProDefine.Project_Corporation)
结果报错:
消息 4145,级别 15,状态 1,第 8 行
An expression of non-boolean type specified in a context where a condition is expected, near ','.
消息 102,级别 15,状态 1,第 8 行
Incorrect syntax near ','.
出错原因:oracle里面多列子查询可以这样写WHERE(col1,col2) NOT IN(SELECT (COL1,COL2) FROM ……),但SQL SERVER里面不支持。
解决办法:用CHECKSUM模拟。
如,改动如下,就可以了。
USE SUBJECTDB_DATA;
BEGIN TRAN;
INSERT INTO SUBJECTDB.ProDefine.Project_Corporation
SELECT pro.CODE,COR.CODE
FROM BDD_PROJECTINFO_INSERT INS
LEFT JOIN SUBJECTDB.PRODEFINE.Corporation COR ON INS.所属法人公司=COR.CNNAME
LEFT JOIN SubjectDB.ProDefine.ProjectInfo pro ON INS.项目名称=PRO.CNNAME
where checksum(PRO.CODE,COR.CODE) not in (select checksum(PROJECTCODE,CorperationCode) FROM SUBJECTDB.ProDefine.Project_Corporation)
还可以通过NOT EXISTS实现:
如:
USE SUBJECTDB_DATA;
BEGIN TRAN;
INSERT INTO SUBJECTDB.ProDefine.Project_Corporation
SELECT pro.CODE,COR.CODE
FROM BDD_PROJECTINFO_INSERT INS
LEFT JOIN SUBJECTDB.PRODEFINE.Corporation COR ON INS.所属法人公司=COR.CNNAME
LEFT JOIN SubjectDB.ProDefine.ProjectInfo pro ON INS.项目名称=PRO.CNNAME
WHERE NOT EXISTS(SELECT *
FROM SUBJECTDB.ProDefine.Project_Corporation P_COR
WHERE P_COR.PROJECTCODE=PRO.CODE
AND P_COR.CorperationCode=COR.CODE
)
- SQL SERVER多列子查询
- Oracle 多列子查询
- 多列子查询(重点)
- SQL多列子表查询,及内容拆分成多行
- 50.Oracle数据库SQL开发之 子查询——编写多列子查询
- SQL Server 多库查询
- SQL Server多表查询
- sql server 多表查询
- socket server列子
- sql 小列子
- SQL一些常用列子
- 查询sql server慢查询
- 多条件查询存储过程-SQL Server
- sql server 2005 多条件查询
- sql server 多表查询 Group by
- 二十四.Sql server多表查询
- sql server 多表查询篇
- SQL server 多表联合查询
- C++ 虚函数
- elevator
- 任务栏多窗口重叠
- javascript常用正则表达式
- 拓扑检查---ArcEngine
- SQL SERVER多列子查询
- Android Dalvik虚拟机初识
- android“设置”中版本号解析
- ubuntu下查看USB摄像头参数
- 中华文明探源工程初步结果----DNA数据 中国人种源头分布一览表
- EBS的初入
- js打开word,exls文件
- input type=file浏览修改,不清空file值,提交表单
- king 选太子