添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

表test 中有数据1,2,3   给定一个集合1,4   查询集合里在表中存在的数据sql为:select * from test where id in (1,4);

如何查询出集合里在表中不存在的数据(查询出4)

ps:只读数据库,而且只能通过sql实现

select 1 as id UNION select 4 as id;

然后进行查询:

select * from
(select 1 as id UNION select 4 as id) s
where s.id NOT in (select id from test);

但是如果集合里的数据多,行转列很麻烦。。。

现在问题就成了如何将 a,b,c,d变成:

a
b
c
d

目前先用这种方式处理。如果给出的集合数据量大,可先使用文本编辑器,写好union sql;然后在数据库中执行。如果大家有更好的整行转整列的方法,希望大家解惑一下。

另外一种此类问题的解决方式,查询出来结果后使用excel进行去重或者删除重复处理,也是一种解决思路

园豆:52 (初学一级) 2017-08-07 14:53

@登顶: 对应的应该叫带参数的表值函数,同时把你的集合当作一个table传进函数,然后就可以把集合当作数据表处理。那就是两个表的查询然后返回数据表。具体语法自己查一下。

支持( 0 ) 反对( 0 ) hahanonym 园豆:1460 (小虾三级) 2017-08-03 11:50