表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
)
园豆:1460
(小虾三级)
2017-08-03 11:50