sql查询的问题,请教各位高手。。。

superpander 2009-08-14 03:09:37
现有2张表tableA,tableB,表结构完全一样,但表tableA有全部的数据,tableB只有部分数据,
如何在存储过程中判断tableA中是否含有tableB中的所有数据,也就是说,如何判断tableA中是否包含了tableB的所有数据,
存储过程如何写????
恳请各位大虾指点。。
...全文
134 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjoulejcc 2009-08-28
  • 打赏
  • 举报
回复
mark
superpander 2009-08-14
  • 打赏
  • 举报
回复
感谢大家的关注,问题解决了,我的解决方案如下,以供参考
tableA的数据是tableB不断追加上去的。我在tableA和tableB表中都加了一个标识字段BS,
每次tableB追加数据到tableA之前,给每条数据的BS字段赋予相同的一个newid(),这样在追加之后,
用select count(*) from tableA where BS=tableB中的标识, 得到tableA中tableB的数据总数
用select count(*) from tableB 得到tableB的数据总数,
如果得到的这两个数字相等,则说明tableA中含有tableB所有的数据,
否则说明tableB未能完整的把数据追加到tableA中。
JonasFeng 2009-08-14
  • 打赏
  • 举报
回复
if Exists(select 1 from tableB B where CheckSum(*) not in (select checkSum(*) from tableA))
print '有不存在的记录'
SQL77 2009-08-14
  • 打赏
  • 举报
回复
IF(SELECT COUNT(*)FROM TABLEB T WHERE NOT EXISTS(SELECT 1 FROM TABLEA WHERE COL1=T.COL1 AND COL2=T.COL2))=0
PRINT '包含'
ELSE
PRINT'不包含'
zy2018 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guguda2008 的回复:]
IF (
SELECT COUNT(A.COL1) FROM TABLEA A
INNER JOIN TABLEB B ON A.COL1=B.COL1 AND A.COL2=B.COL2 AND ....  --所有字段相等
)=(SELECT COUNT(B.COL1) FROM TABLE B)
SELECT '包含'
ELSE
SELECT '不包含'
[/Quote]
这个是对的!
Leshami 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guguda2008 的回复:]
IF (
SELECT COUNT(1) FROM TABLEA A
INNER JOIN TABLEB B ON A.COL1=B.COL1 AND A.COL2=B.COL2 AND ....  --所有字段相等
)=(SELECT COUNT(1) FROM TABLEB)
SELECT '包含'
ELSE
SELECT '不包含'
[/Quote]
5楼的正解,对楼主这个问题.
doyouknowm 2009-08-14
  • 打赏
  • 举报
回复

SELECT t1.* FROM test1 t1
LEFT JOIN test2 t2
ON t1.id = t2.id
WHERE t2.ID IS NULL
superpander 2009-08-14
  • 打赏
  • 举报
回复
不好意思,是6楼的不对。。。

[Quote=引用 6 楼 jwdream2008 的回复:]
SQL codeif ( (selectcount(1)from tableAwhereexists (select*from tableB))=(selectcount(1)from tableB))print'相等'elseprint'不相等'
[/Quote]

这个不对,我测试过了,selectcount(1)from tableAwhereexists (select*from tableB)查找的是tableA的数据总数总数,selectcount(1)from tableB 这句查找到是tableB的数据总数。
所以不对
superpander 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guguda2008 的回复:]
IF (
SELECT COUNT(1) FROM TABLEA A
INNER JOIN TABLEB B ON A.COL1=B.COL1 AND A.COL2=B.COL2 AND ....  --所有字段相等
)=(SELECT COUNT(1) FROM TABLEB)
SELECT '包含'
ELSE
SELECT '不包含'
[/Quote]

测试过了,貌似不对。。。
LGP88864237 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jwdream2008 的回复:]
SQL codeif ( (selectcount(1)from tableAwhereexists (select*from tableB))=(selectcount(1)from tableB))print'相等'elseprint'不相等'
[/Quote]

正解
jwdream2008 2009-08-14
  • 打赏
  • 举报
回复
if ( (select count(1) from tableA where exists (select * from tableB)) =(select count(1) from tableB))
print '相等'
else
print '不相等'
guguda2008 2009-08-14
  • 打赏
  • 举报
回复
IF (
SELECT COUNT(1) FROM TABLEA A
INNER JOIN TABLEB B ON A.COL1=B.COL1 AND A.COL2=B.COL2 AND .... --所有字段相等
)=(SELECT COUNT(1) FROM TABLEB)
SELECT '包含'
ELSE
SELECT '不包含'
SQL77 2009-08-14
  • 打赏
  • 举报
回复
SELECT * FROM TABLEB T WHERE NOT EXISTS(SELECT 1 FROM TABLEA WHERE COL1=T.COL1 AND COL2=T.COL2)
?
jwdream2008 2009-08-14
  • 打赏
  • 举报
回复
顶!
guguda2008 2009-08-14
  • 打赏
  • 举报
回复
有没有ID之类的字段
liangCK 2009-08-14
  • 打赏
  • 举报
回复
N多了。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧