SQL 查找两表中不同的数据

设a表
1,2,3
1,2,4
b表
1,2,3
1,2,4
1,2,5
目的找出1,2,5
数据量很大要效率高的语句

使用except函数,select * from B where (select count(1) from A where A.ID = B.ID) = 0.

方法一(推荐)

WITH   C AS ( SELECT   Name

FROM     ConsumerCouponApply A

WHERE    NOT EXISTS ( SELECT 1

FROM   ConsumerCouponApply B

WHERE  B.Name = A.Name

GROUP BY B.Name )

GROUP BY A.Name

)

SELECT  COUNT(1)

FROM    C

方法二

WITH    C AS ( SELECT   A.Name

FROM     ConsumerCouponApply A

GROUP BY A.Name

EXCEPT

SELECT   B.Name

FROM     ConsumerCouponApply B

GROUP BY B.Name

)

SELECT  COUNT(1)

FROM    C

方法三

SELECT  COUNT(A.Name)

FROM    ConsumerCouponApply A

LEFT JOIN ConsumerCouponApply B ON A.Name = B.Name

WHERE   B.ID IS NULL

扩展资料:

高级查询运算词:

A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个

结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行

不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当

ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。



温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-10
方法比较多
我随便举两个例子
假设a表中有一列‘aa’,数据是1,2,3
1,2,4
b表中有一列‘bb’,数据是1,2,3
1,2,4
1,2,5
目的是找出这个1,2,5
其实就是找出唯一值

方法1:写个子查询嵌套
select * from (select a.aa as 'ccc',b.bb as 'bbb'
from a full join b on a.aa = b.bb) c where c.ccc is null or c.bbb is null
这个语句就是找出2张表中的唯一值

方法2:利用union连接再分组having,取得唯一值
select c.aa,count(*) from (select aa from a
union all
select bb from b) c group by c.aa having count(*) = 1
查询出的就是两张表中的唯一值【其实也就是重复次数 = 1的】本回答被网友采纳
第2个回答  2010-12-10
给段代码 使用数据库是vs2005自带的sql express。当然 不同的数据库连接字符串不一样 但是GetDataSet(string sql, string tablename)
方法是通用的~参数sql是你sql查询语句 tablename是输出地表明 可以随便添

public static string ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=数据库文件路径;Integrated Security=True;Connect Timeout=30;User Instance=True";
public DataSet GetDataSet(string sql, string tablename)
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection(DataAccess.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
try
{
da.Fill(ds, tablename);
if (ds.HasChanges()) da.Update(ds);
}
catch (Exception ex)
{
MessageBox.Show("打开数据库表错误:" + ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
finally
{

con.Close();
con.Dispose();
da.Dispose();
}
return ds;
}

使用方法 datagridview1.datasource=GetDataSet("select * from student where name="姚明"","table1") //datagridview1当然是你winfrom里的一个datagridview
第3个回答  推荐于2017-11-23
--一句SQL就搞定
SELECT * FROM b
EXCEPT
SELECT * FROM a本回答被提问者采纳

SQL 查找两表中不同的数据
使用except函数,select * from B where (select count(1) from A where A.ID = B.ID) = 0.方法一(推荐)WITH C AS ( SELECT Name FROM ConsumerCouponApply A WHERE NOT EXISTS ( SELECT 1 FROM ConsumerCouponApply B WHERE B.Name = A.Name GROUP BY B.Name )GROUP...

oracle中怎么查俩个一摸一样的表中数据不一样的行
在Oracle中,若要查找两个完全相同表中数据存在差异的行,可以通过自连接实现。具体查询语句如下:SELECT * FROM table AS T1,table AS T2 WHERE T1.age = T2.age AND T1.score = T2.score;解释一下这个语句的含义:首先,使用“AS”关键字为两个表分别命名T1和T2。这样,我们可以将这两个表...

SQL查询两个表相同的两个字段里不同的数据有哪些
1、首先得出两个表的并集 注:full join :存在匹配,匹配显示;同时,将各个表中不匹配的数据与空数据行匹配进行显示。可以看成是左外连接与右外连接的并集。图中结果左侧两列为TABLE1,右侧两列为TABLE2。前三条记录表示TABLE1和TABLE2都有的数据。TABLE1项为NULL的记录说明TABLE2中无相同项。同理...

ACCESS中有2个表,想找出2个表不一样的数据,SQL查询怎么写?
distinct是关键,在select后面加上这个就成功了。另外,最快的查找方法是下面这2条,之所以是2条因为要找两次才能找全互相不同的数据:select distinct Standard_Data1.* from Standard_Data1 left join Standard_Data2 on Standard_Data1.MSISDN=Standard_Data2.MSISDN where Standard_Data2.MSISDN is ...

sql 查找两个表不相同的数据
b3 from b)可以查出A1=B1 A2=B2 A3=B3 的数据,select * from a where a1 not in (select b1 from b) and a2 not in (select b2 from b) and a3 not in (select b3 from b)可以查出A1≠B1 A2≠B2 A3≠B3 三项都不相等的数据。虽然用的都是子查询,长了点请不要介意啊!

用一个SQL查询语句查询两个表的数据是否一致,不一致的数据显示出来 疑 ...
查询指定列 SQL>SELECT empmo, ename, mgr FROM emp;SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK';结构化查询语言(英文简称:SQL)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理...

如何将SQL两个表中某一字段不一样的行筛选出来?
假设两个表A和B,如你所说:A比B的数据要多,找出A中多出的数据就用not in,col为他们的公共列 select * from A where col not in (select col from B)

SQL文:查找出两条记录不相同的字段项和内容(结构完全一致)
给你个思路你看看行不.把被修改过的行的两个表中的内容全部显示出来,可以这样实现(两个表中的ID应该是一致的吧):SELECT *FROM 人员表 R JOIN 操作表 C ON R.ID=C.ID WHERE R.NAME!=C.NAME OR R.GENDER!=C.GENDER OR R.BIRTH!=C.BIRTH ...

两表sql查询语句对比!
from USERL as u inner join VIO_SURVEIL as v on u.HPHM=v.HPHM 如果没有WFDZ字段:select '您的'+u.HPHM+'于'+v.WDSJ+'在WFDZ,请到'+v.CJJGMC from USERL as u inner join VIO_SURVEIL as v on u.HPHM=v.HPHM 内联查询:select '您的'+v.HPHM+'于'+v.WDSJ+'在'+v....

两张表 如何用SQL筛选出某列不相同的记录
select * from A,B where a.ksh=b.ksh and a.sfzh<>b.sfzh

相似回答