0

我的帖子

个人中心

设置

  发新话题
A表:
二条记录
DPID:111111
DPID:222222

B表:
三条记录
DPID:111111
CCID:AAAAA

DPID:111111
CCID:BBBBB

DPID:222222
CCID:AAAAA

DPID:222222
CCID:CCCCC

查找当CCID = CCCCC时A表的记录:此时应返回111111;
查找当CCID = BBBBB时A表的记录:此时应返回222222;

查找当CCID = DDDDD时A表的记录:此时应返回111111 和 222222

这样的查询语句应该怎么写呢?

应用场景大概描述一下:用户发布需求,众多服务商报价。服务商列出自己没有参与报价的需求,以方便自己报价。



做个例子,
create table dbo.Table_A
(DPID nvarchar(32))

INSERT dbo.Table_A  VALUES ('111111');
INSERT dbo.Table_A  VALUES ('222222');

CREATE table dbo.Table_B
(DPID nvarchar(32),
CCID nvarchar(8))

insert dbo.Table_B values ('111111','AAAAA');
insert dbo.Table_B values ('111111','BBBBB');
insert dbo.Table_B values ('222222','AAAAA');
insert dbo.Table_B values ('222222','CCCCC');


然后按照你的要求的三个查询应该是这样的。

SELECT a.DPID   FROM dbo.Table_A a  
where a.DPID not in   (select coalesce(b.DPID,'')    from dbo.Table_B b   where b.CCID='BBBBB'  )

SELECT a.DPID   FROM dbo.Table_A a  
where a.DPID not in   (select coalesce(b.DPID,'')    from dbo.Table_B b   where b.CCID='CCCCC'  )

  SELECT a.DPID   FROM dbo.Table_A a  
where a.DPID not in   (select coalesce(b.DPID,'')    from dbo.Table_B b   where b.CCID='DDDDD'  )


运行结果见附图。
forum_reply_51cto_20180523_th1.JPG (47.6 KB)

2018-5-23 19:29

运行结果

forum_reply_51cto_20180523_th1.JPG

本帖最近评分记录
  • seusoftware 无忧币 +29 热心广援 2018-5-29 14:59



引用:
原帖由 wx5ac323771fe4b 于 2018-5-23 19:29 发表
做个例子,
create table dbo.Table_A
(DPID nvarchar(32))

INSERT dbo.Table_A  VALUES ('111111');
INSERT dbo.Table_A  VALUES ('222222');

CREATE table dbo.Table_B
(DPID nvarchar(32),
CCID nvarchar(8))

...
太赞了!果然是SQL高手



引用:
原帖由 wx5ac323771fe4b 于 2018-5-23 19:29 发表
做个例子,
create table dbo.Table_A
(DPID nvarchar(32))

INSERT dbo.Table_A  VALUES ('111111');
INSERT dbo.Table_A  VALUES ('222222');

CREATE table dbo.Table_B
(DPID nvarchar(32),
CCID nvarchar(8))

...
非常感谢您的热心回复,对我的帮助实在是太大了,谢谢!



我觉得应该可以做个左外连接吧,A表作为左表



not exists就可以了啊



我的51CTO博客

SQL Server MCITP, MVP, MCT, DBA
引用:
原帖由 harryconsulting 于 2018-05-23 19:29 发表
做个例子,create table dbo.Table_A(DPID nvarchar(32))INSERT dbo.Table_A  VALUES ('111111');INSERT dbo.Table_A  VALUES ('222222');CREATE table dbo.Table_B(DPID nvarchar(32),  CCID nvarchar(8)) insert dbo.Ta ...
请教大神是怎么在评论插入图片*,我找好久都没看见。我用的是手机app.的,大神是在电脑插入图片的?




‹‹ 上一贴:sql server 2005还原数据到sql server 2000   |   下一贴:为什么还原SQLServer数据库的状态一直都是正在还原 ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com