关于网友提出的“一个SQL的写法问题,求助”问题疑问,本网通过在网上对“一个SQL的写法问题,求助”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:一个SQL的写法问题,求助
描述:有一个结果集大概样式是这样 (1,2,3),有一张表t1:
mysql> select * from t1;
+------+
| a |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
现在的需求是,选出结果集中1,2,3有但表中没有的数据,按照上面也就是选出结果是3,如果都是从表中选取就简单了,但一张表和一个结果集比较就难了,求助
解决方案1:select * from (select substring('1,2,3',1,instr('1,2,3',',')-1)
union
select substring(substring('1,2,3',instr('1,2,3',',')+1),1,instr(substring('1,2,3',instr('1,2,3',',')+1),',')-1)
union
select substring(substring('1,2,3',instr('1,2,3',',')+1),instr(substring('1,2,3',instr('1,2,3',',')+1),',')-1)+1) r left join t1 t on r.a = t.a where t.a is null
类似这种,请参考~~
解决方案2:select * from (result) r left join t1 t on r.a = t.a where t.a is null
解决方案3:
硬要通过SQL实现的话:(1,2,3)当做字符,截图处理,union合集,关联t1,(1,2,3)数值太多就不好办。PS:既然(1,2,3)是写死的,可以换种形式存储嘛,有时候模型合理,实现起来更简便。
解决方案4:
not in 但是好像效率不怎么样
解决方案5:结果集是怎么产生的,查询表等到的吗?还是写死的?如果是查询表,可以用not exists 关键字
解决方案6:存储过程还是代码里啊
以上介绍了“一个SQL的写法问题,求助”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1363194.html