SQL:逐记录比较两个表
我想逐个记录比较两个表。每个表有两个光标。代码如下所示SQL:逐记录比较两个表,sql,sql-server,cursor,fetch,Sql,Sql Server,Cursor,Fetch,我想逐个记录比较两个表。每个表有两个光标。代码如下所示 Declare Cursor c1 for SELECT * from Table1 OPEN c1 While @@Fetch_status=0 Begin Declare Cursor c2 for SELECT * from Table2 OPEN c2 WHILE @@Fetch_Status=0 Begin /*Comparison happens here*/ END END 进行此操作时,必须指
Declare Cursor c1 for SELECT * from Table1
OPEN c1
While @@Fetch_status=0
Begin
Declare Cursor c2 for SELECT * from Table2
OPEN c2
WHILE @@Fetch_Status=0
Begin
/*Comparison happens here*/
END
END
进行此操作时,必须指定要获取的游标以及如何获取
编辑
对于表1中的每条记录,我想
- 根据主键在表2中搜索该记录
- 找到后,我想根据表1中某列的值更新表2中的额外列值李>
- 当这个记录在表2中丢失时,我想复制它 从表1到表2,并在中设置额外列的默认值 表2
SELECT * FROM Table1 LEFT JOIN Table2 ON <your matching criteria>
SELECT*FROM table 1 LEFT JOIN table 2 ON
…然后对右边“一半”为空的行执行INSERT,并对右边“一半”为空的行执行UPDATE?您就不能
SELECT * FROM Table1 LEFT JOIN Table2 ON <your matching criteria>
SELECT*FROM table 1 LEFT JOIN table 2 ON
…然后对右边“half”为空的行执行INSERT,对右边“half”为空的行执行UPDATE?如果表具有相同的列定义,fastes方法就是使用'except'子句:
SELECT * from Table1
except
SELECT * from Table2
也可以以相反的方式运行它:
SELECT * from Table2
except
SELECT * from Table1
您将看到确切的设置差异:
如果表具有相同的列定义,fastes方法就是使用'except'子句:
SELECT * from Table1
except
SELECT * from Table2
也可以以相反的方式运行它:
SELECT * from Table2
except
SELECT * from Table1
您将看到确切的设置差异:
为什么不将查询编写为联接?您应该提供您所谈论的数据库系统的信息。它是mysql、pgsql、,oracle还是mssql系统?很抱歉,当我们遇到询问者在评论中提出的SQL问题时,
我如何加入?
那么这可能不是一个适合该网站的问题。@jpo也许如果你告诉我们你希望完成的所有事情,我们可以帮助你找到一个好的解决方案。否则,我们只会在风车上来回摆动,在每次失败/不满意的尝试后只获得我们需要的信息。为什么不将查询作为连接编写?您应该提供您所谈论的数据库系统的信息。它是mysql、pgsql、,oracle还是mssql系统?很抱歉,当我们遇到询问者在评论中提出的SQL问题时,我如何加入?
那么这可能不是一个适合该网站的问题。@jpo也许如果你告诉我们你希望完成的所有事情,我们可以帮助你找到一个好的解决方案。否则,我们只会在风车上摇摆不定,在每一次失败/不满意的尝试后只获得我们需要的信息。