在查询表A使用第一个查询后,我有这些记录:
pID cID code
1 1 A
1 1 B
1 1 B
1 1 B
在使用第二个查询查询表B之后,我有一条记录:
pID cID code
1 1 B
1 1 B
我希望表A排除表B的记录。结果是:
pID cID code
1 1 A
1 1 A
我该怎么做?希望你能帮助我。谢谢。
正在更新...
很抱歉让你混淆的例子
如果我从第二张表中得到这些记录:
pID cID code
1 1 B
然后我想要的结果是(排除一条记录):
pID cID code
1 1 A
1 1 B
1 1 B
答案 0 :(得分:0)
只需使用EXCEPT。您的所需输出错误,因为1 B也是TableB的相同记录
SELECT * FROM TABLE_A
EXCEPT
SELECT * FROM TABLE_B
请参阅此Link
如果你的情况不是全部,那么一些。
只需使用DISTINCT
即可根据问题的更新(根据我的理解)
SELECT DISTINCT * FROM TABLE_A
UNION ALL
SELECT * FROM TABLE_B
答案 1 :(得分:0)
您在查询中尝试 GROUP BY 功能 例如:
select pID,cID,code from table group by code
答案 2 :(得分:0)
使用EXCEPT和row_number()生成唯一的no
;with cte1 as
(
select *, rn = row_number() over (partition by pID, cID, code order by pID, cID, code)
from query1
),
cte2 as
(
select *, rn = row_number() over (partition by pID, cID, code order by pID, cID, code)
from query2
)
select *
from cte1
except
select *
from cte2
答案 3 :(得分:0)
基于您的问题,我认为您要删除B中的记录,这些记录在A中出现不止一次:
首先从A中选择B中不存在的所有记录,然后将它们与A和B中的1个不同记录合并:
select * from A
except
select * from B
union all
select distinct *
from
(select a.pid, a.cid, a.code
from
A
inner join
B
on a.pid=b.pid and a.cid=b.cid and a.code=b.code)