怎么用SQL比对两表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用SQL比对两表相关的知识,希望对你有一定的参考价值。
表1,A字段包含B字段
A B
111 123
111 235
表2,C字段包含D字段
C D
111 123
如何用SQL来比对,两表之间的差异数据?
select * from 表1 minus select * from 表2
SqlServer2005中可以这样:
select * from 表1 except select * from 表2
sqlserver2000中可以这样:
select * from 表1 where not exists (select 1 from 表2 where C=表1.A and D=表1.B)
sqlserver2000里边的这种方式在Oracle和sqlserver2005中也是可行的本回答被提问者采纳 参考技术B 两表字段类型一样~
思路:先把两表的数据合并~,然后把重复的数据剔除掉,剩下的就是两表的差异数据了!
-----实现语句----------------
Select * from (select * from A
Union all
Select * from B) T Group by A,B having count(*)=1 参考技术C --表结构:
CREATE TABLE t1_old (
id int NOT NULL,
log_time DATETIME DEFAULT '') ;
CREATE TABLE t1_new (
id int NOT NULL,
log_time DATETIME DEFAULT '') ;--两表的记录数都为100条。select count(*) from t1_old;select count(*) from t1_new; 参考技术D oracle中:
select * from 表1
minus
select * from 表2
SqlServer2000中:
select * from 表1 where not exists(
select * from 表2 where 表2.C=表1.A and 表2.D=表1.B)
---
以上,希望对你有所帮助。 第5个回答 2019-06-02 sqlserver写法,其他数据库可能略有不同,如果其他数据库请说明
select a.发票号,sum(isnull(b.金额,0)) 汇总表金额,sum(c.总金额) 明细表金额
from
(select 发票号 from 汇总表
union
select 发票号 from 明细表) a
left join 汇总表 b on a.发票号=b.发票号
left join (select 发票号,sum(金额) 总金额 from 明细表 group by 发票号) c on a.发票号=c.发票号
group by a.发票号
用SQL语句怎么从一个表中怎么获取最高工资的三个人
使用查询语句select top 3 * from (数据库) order by (工资字段名) desc
如果取出来的刚好是工资最低的,那就把desc去掉
如果你需要完整的代码,可以直接联系我 ,说明你的数据库,开发使用的语言,我可以帮你写完整的代码 参考技术A select top 3 *
from 表
order by 工资字段 desc
以上是关于怎么用SQL比对两表的主要内容,如果未能解决你的问题,请参考以下文章