SQL中 我想要查询集合id中,对应表的id不在集合id中的值,有点乱,我举例说: 如图 5

 我来答
匿名用户
推荐于2017-06-15
展开全部
CREATE TABLE A (id  int);
CREATE TABLE B (id  int);

INSERT INTO  A VALUES(1);
INSERT INTO  A VALUES(2);
INSERT INTO  A VALUES(3);

INSERT INTO  B VALUES(1);
INSERT INTO  B VALUES(2);
INSERT INTO  B VALUES(3);
INSERT INTO  B VALUES(4);
INSERT INTO  B VALUES(5);
GO


上面为 测试表 + 测试数据


下面为查询语句 与查询结果

1> -- 方法1: 用 NOT IN
2> SELECT * FROM B WHERE id  NOT IN ( SELECT id FROM A );
3> GO
id
-----------
          4
          5

(2 行受影响)
1>
2> -- 方法2: 用 NOT EXISTS
3> SELECT * FROM B WHERE NOT EXISTS ( SELECT id FROM A WHERE  A.id = B.id );
4> GO
id
-----------
          4
          5

(2 行受影响)
1>
2> -- 方法3: 用 LEFT JOIN
3> SELECT B.* FROM B LEFT JOIN A ON (B.id = A.id) WHERE A.id IS NULL;
4> GO
id
-----------
          4
          5

(2 行受影响)
1>
2> -- 方法4:用 EXCEPT
3> SELECT * FROM B EXCEPT SELECT * FROM A;
4> GO
id
-----------
          4
          5

(2 行受影响)
追问
首先表示谢谢。如果是两张表的话 我这些方法都会。只是实际上是,从一个列表B中(js页面)选择几个数据(checkbox),不是选择所有的,筛选出选择的数据中A表中不关联的数据。
sysplay
2017-06-13 · TA获得超过1155个赞
知道小有建树答主
回答量:663
采纳率:86%
帮助的人:539万
展开全部
Select id
From 有一个id集合
Where id not in (select id from 表A)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友af89816
2017-06-13 · TA获得超过241个赞
知道小有建树答主
回答量:237
采纳率:0%
帮助的人:87.3万
展开全部
select id from table where id not in (select id from A)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanglei1348
2013-05-28 · TA获得超过1583个赞
知道小有建树答主
回答量:2098
采纳率:61%
帮助的人:590万
展开全部
说明下,首先你要确保在A中有的都会在有一个这个表里面存在,就是不会存在A中有id 0而 有一个表中没有,你应该把情况都说清楚了,之后才能得到准确的答案,不然你运行不好的如果是以上那种情况的话现在我写了个脚本给你
select
B.id
from
B
where
B.id not in (select A.id from A);

当然这个sql文对应oracle和mysql 还有sqlite时不一样的,总之都差不多,你改改就能用,不过我上面提到的你应该想清楚
追问
首先表示谢谢。如果是两张表的话 我这些方法都会。只是实际上是,从一个列表B中(js页面)选择几个数据(checkbox),不是选择所有的,筛选出选择的数据中A表中不关联的数据。
追答
呵呵,那就更简单了啊,你要传入一个参数,也就是说你要用pro 而不是直接的sql文,pro 的in参数是你的选择的id,命名为inParameter,但是你要把参数编辑成这种方式:‘0,1,2’ 这种方式,之后呢用这个sql文跑出out结果 out 参数的命名为outResult(这个outResult是指针类型,在数据库里叫游标)
select
A.id into outResult
from A
where
a.id not in inParameter
当然了我这么些肯定不对,因为最好是把sql文放到字符串里,之后运行字符串把结果放到游标里,这样好点儿,总结老说吧,你首先出发点没搞对,定性为pro或者function而不是简单的sql文,因为要传入参数和传出参数。如果你用ibatis之类的东西的话这些都很简单
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
非得填个用户名
2013-05-28 · 超过26用户采纳过TA的回答
知道答主
回答量:133
采纳率:100%
帮助的人:73.6万
展开全部
select b.id from a,b where a.id<>b.id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式