问一条SQl语句

Magicwords 2010-06-04 05:30:29
表TA

编号 名称 状态
----------------------------------
1000 1000 0
1001 1001 0
1002 1002 1
1003 1003 1
1004 1004 1
1005 1005 1


表TB
编号 名称 状态
----------------------------------
1000 1000 1
1001 1001 0
1003 1003 0
1005 1005 1

查询出表A中有,且状态与表B不相等的记录(表TA中有,表TB中没有的记录也要查出来)
查询出来的结果如下

编号 名称
---------------------
1000 1000
1002 1002
1003 1003
1004 1004
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸运的意外 2010-06-04
  • 打赏
  • 举报
回复
SELCT
A.编号,A.名称
FROM
[TA] A
LEFT OUTER JOIN
[TB] B
ON
A.编号 = B.编号
AND
A.名称 = B.名称
AND
A.状态 <> B.状态
WHERE
B.状态 IS NULL
楼主,掉了一个条件,不好意思。
幸运的意外 2010-06-04
  • 打赏
  • 举报
回复
SELCT
A.编号,A.名称
FROM
表A A
LEFT OUTER JOIN
表B B
ON
A.编号 = B.编号
AND
A.名称 = B.名称
AND
A.状态 <> B.状态
--小F-- 2010-06-04
  • 打赏
  • 举报
回复
全部被写完了
htl258_Tony 2010-06-04
  • 打赏
  • 举报
回复
-->SQL2K的另一方法:
SELECT *
FROM [TA]
WHERE CHECKSUM(*)
NOT IN (
SELECT CHECKSUM(*)
FROM [TB]
)
/*
编号 名称 状态
----------- ----------- -----------
1000 1000 0
1002 1002 1
1003 1003 1
1004 1004 1

(4 行受影响)
*/
永生天地 2010-06-04
  • 打赏
  • 举报
回复

select a.* from TA a left join TB b on a.编号=b.编号
where b.编号 is null or a.状态<>b.状态

/*
编号 名称 状态
----------- ----------- -----------
1000 1000 0
1002 1002 1
1003 1003 1
1004 1004 1

(所影响的行数为 4 行)
*/
pt1314917 2010-06-04
  • 打赏
  • 举报
回复
select * from [TA] a where not exists
(select 1 from tb where 编号=a.编号 and 状态=a.状态D)
htl258_Tony 2010-06-04
  • 打赏
  • 举报
回复
--> 生成测试数据表: [TA]
IF OBJECT_ID('[TA]') IS NOT NULL
DROP TABLE [TA]
GO
CREATE TABLE [TA] ([编号] [int],[名称] [int],[状态] [int])
INSERT INTO [TA]
SELECT '1000','1000','0' UNION ALL
SELECT '1001','1001','0' UNION ALL
SELECT '1002','1002','1' UNION ALL
SELECT '1003','1003','1' UNION ALL
SELECT '1004','1004','1' UNION ALL
SELECT '1005','1005','1'

--> 生成测试数据表: [TB]
IF OBJECT_ID('[TB]') IS NOT NULL
DROP TABLE [TB]
GO
CREATE TABLE [TB] ([编号] [int],[名称] [int],[状态] [int])
INSERT INTO [TB]
SELECT '1000','1000','1' UNION ALL
SELECT '1001','1001','0' UNION ALL
SELECT '1003','1003','0' UNION ALL
SELECT '1005','1005','1'


-->SQL查询如下:
SELECT * FROM [TA]
EXCEPT
SELECT * FROM [TB]
/*
编号 名称 状态
----------- ----------- -----------
1000 1000 0
1002 1002 1
1003 1003 1
1004 1004 1

(4 行受影响)
*/
xuam 2010-06-04
  • 打赏
  • 举报
回复
select 编号, 名称 from TA where not exists (select a.* from TA a ,TB b where a.编号=b.编号 and a.状态 =b.状态)

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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