一个简单的查询问题

lgyun 2011-01-21 11:30:44
我这有两个表D1和D2,D1中有d1字段,D2中有d2字段,d1中有些是和d2相同,我想在D1中找出不同的记录,该怎么编写SQL语句。
...全文
128 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoguanzhao 2011-01-24
  • 打赏
  • 举报
回复
SELECT * FROM D1 where d1 not in (select d2 from D2);
clarck_913 2011-01-23
  • 打赏
  • 举报
回复



SELECT COLUMNS FROM D1 WHERE NOT EXSITS (
SELECT 1 FROM D2 WHERE D1.d1 = D2.d2
)
叶子 2011-01-21
  • 打赏
  • 举报
回复

declare @D1 table (D1 int)
insert into @D1
select 1 union all
select 2 union all
select 3 union all
select 4

declare @D2 table (D2 int)
insert into @D2
select 2 union all
select 3 union all
select 5 union all
select 6

SELECT a.* FROM @D1 a LEFT JOIN @D2 b ON a.D1=b.D2
WHERE b.D2 IS NULL
/*
D1
-----------
1
4
*/
Shawn 2011-01-21
  • 打赏
  • 举报
回复
SELECT * FROM
(
SELECT d1 FROM D1
UNION ALL
SELECT d2 FROM D2
) a
GROUP BY d1
HAVING COUNT(*) = 1
dawugui 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lgyun 的回复:]
select distinct D1.d1 from D1,D2 WHERE D1.d1<>D2.d2 为什么不行
你写的我看下,没错就结贴
[/Quote]你写的这个不行.没有为什么,他产生了迪卡尔积.
lxxx254271026 2011-01-21
  • 打赏
  • 举报
回复
感觉楼主写的不对
lgyun 2011-01-21
  • 打赏
  • 举报
回复
select distinct D1.d1 from D1,D2 WHERE D1.d1<>D2.d2 为什么不行
你写的我看下,没错就结贴
wing7742 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
select d1.* from d1 where not exists(select 1 from d2 where d2.d2 = d1.d1)

select d1.* from d1 where d1 not in (select d2 from d2)
[/Quote]
同意
dawugui 2011-01-21
  • 打赏
  • 举报
回复
select d1.* from d1 where not exists(select 1 from d2 where d2.d2 = d1.d1)

select d1.* from d1 where d1 not in (select d2 from d2)
想到才能做到 2011-01-21
  • 打赏
  • 举报
回复
select d1.* from d1 where d1 not in (select d2 from d2)
Shawn 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lgyun 的回复:]

select distinct D1.d1 from D1,D2 WHERE D1.d1<>D2.d2 为什么不行
你写的我看下,没错就结贴
[/Quote]
CREATE TABLE D1(d1 INT)
INSERT INTO D1
SELECT 1 UNION ALL
SELECT 2

CREATE TABLE D2(d2 INT)
INSERT INTO D2
SELECT 2 UNION ALL
SELECT 3

--select distinct D1.d1 from D1,D2 WHERE D1.d1<>D2.d2 语句的执行步骤
SELECT * FROM D1,D2 --A
SELECT * FROM (SELECT * FROM D1,D2)A WHERE d1 <> d2 --B
SELECT DISTINCT d1 FROM (SELECT * FROM (SELECT * FROM D1,D2)B WHERE d1 <> d2)C --C
oO寒枫Oo 2011-01-21
  • 打赏
  • 举报
回复

select d1 from tb_D1
except
select d2 from tb_D2

34,838

社区成员

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

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