求高手给写一条SQL语句,返回两个表中的两条数据之差

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求高手给写一条SQL语句,返回两个表中的两条数据之差相关的知识,希望对你有一定的参考价值。

表A和表B中各有一个id字段,均自动增长,为了保证这两个id字段是同步的,我在插入数据之前需要检查两表的id最大值是否相同。
所以我想返回表A中最大的id和表B中最大的id的差值,如何构造sql语句,可以返回这个差值呢?

照你的需求来看,确定AB表都没有DELETE吧?不然无意义。
首先为什么不用数据库自带的自增序列,AB都共用一个自增序列,保证万无一失。我估计你是不方便用或者是数据库没有。我倒是有个其他的办法相对简单点,就是建立一个public_id表假设叫C表,此表存放AB...所有表的自增最新ID,每次AB。。表插入都取C表的数据,这样自增ID都出自同源,自然永远相同。
要是比较AB表最大值,当他们数据激增的时候,光计算就得花很长时间,插入一条数据得等多长时间是无法估计得,更别提高并发了。
参考技术A 不知道你什么数据库.
如果 Oracle , 倒是很省事。 创建一个序列号, 2个表共用。
A表插入的时候,取 下一个序列号, B表插入的时候,取当前序列号。

如果是 SQL Server 或者 mysql 这种,用数据库系统自增的。
就自己控制好,别插入一条A,再插入两条B这种情况发生。
不过如果发生异常,还是会导致不匹配的。
例如首先插入A, 某些 Check 没通过,数据没插入,但是那个自增的ID可能被递增了。

想返回表A中最大的id和表B中最大的id的差值
倒是很简单
SELECT
MAX(A.id) - MAX(B.id) AS 差值
FROM
A FULL JOIN B ON (A.id = B.id)本回答被提问者采纳
参考技术B Select max(A表.ID)-Max(B表.ID) as CZ From A表,B表
如果返回0表示两张表最大值一样。否则大于0或小于0,知道怎么处理了吧。
参考技术C select max(id) as maxa from a
select max(id) as maxb from b
begin
if maxa>maxb
return maxa-maxb
else if maxa<maxb return maxb-maxa
else return "ok"
end
没设过 应该没问题。有可能语法写的不对,不过思路一样。 希望对你有所帮助
go
参考技术D 标准SQL中没有提供集合差操作,但可用其他方法间接实现。
查询学生姓名与教师姓名的差集
本例实际上是查询学校中未与教师同名的学生姓名
SELECT DISTINCT Sname
FROM Student
WHERE Sname NOT IN
(SELECT Tname
FROM Teacher);

在C#中使用SQL语句查询数据在表中是不是存在输出是或否

"就是说我查询了表中有没有一条符合我要求的数据,我需要他返回一个值让我判断 有没有"

当然有了,简单的,就是你从数据库裏查出来放在datatable中,你看看datatable的rows的count
如果大於0,就存在把;小於0,就不存在

祝你好运
参考技术A 没有说明白啊追问

就是说我查询了表中有没有一条符合我要求的数据,我需要他返回一个值让我判断 有没有

以上是关于求高手给写一条SQL语句,返回两个表中的两条数据之差的主要内容,如果未能解决你的问题,请参考以下文章

怎样用Sql语句判断一张表中的两条数据相同

SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条?

mysql查询语句例题

mysql如何查询一个字段里面相同的两条数据。如库名为s,表名为task,字段名为rank。请写一段这样的sql语句

求高手帮忙sql写法:树节点放一个表中,怎么用一条语句查询一个节点及对应的所有父节点信息。

从表中的两列中选择相同的数据,并使用一条sql语句显示所有数据