我的sql sql语句中in的用法in,为什么用不了

查看: 9945|回复: 13
SQL IN语句如何返回在表中不存在的值
论坛徽章:0
假设表内容如下:
ID& &&&NAME
11& && &aa
22& && &bb
33& && &cc
SQL语句如下:
select id,name from table where id in ('11','44')
因为44在表中不存在,
所以SQL只会返回
ID& &&&NAME
11& && &aa
如何改写SQL,让在表中不存在的44也能返回结果呢?即如下结果:
ID& &&&NAME
11& && &aa
论坛徽章:126
SQL& select *
SQL& select nvl(t1.id, t2.id) id,
&&2& && && &t1.name
&&3& & from tmp t1 full outer join (select '11' id from dual union all select '44' id from dual) t2 on t1.id = t2.id
&&4& &where t1.id = t2.id or t1.
论坛徽章:0
bell6248 发表于
我SQL中的id参数是个从外部文件读入的
形如'11','22','33','44'...的字符串。
现在我想用一个SQL来使取出的数据是这样的形式:
不知该怎么实现?
求职 : 论坛徽章:27
字符串拆分? 你能给出在详细的数据吗?
论坛徽章:26
这个只有拆串外连接了
论坛徽章:4
不知道这样做的意义在哪里
论坛徽章:0
简单说一下用户需求吧。
用户提供了一个EXCEL文件 里面只有ID一列,
但行数很多,大概有8万左右,无重复ID。
需求是去DB里检索ID 对应的名称,日期。。之类的信息,
然后追加到EXCEL文件的B,C。。。列里。
如果DB里该行ID不存在的话,就把这行的数据设成空。
如果采用ID一条一条循环从DB取值的方法的话当然可以满足需求,
但执行时间太长,2万条数据的执行时间就超过半小时了。
我的设想是先把ID拼成上面所说的超长字符串,然后用in语句,
这样可以极大的减少执行时间,但是却产生了一个新的问题:
因为有些值在DB中不存在,所以这些值不会在DB抽出生成的文件里显示,
这样生成文件的ID列和用户提供的原始文件的ID列就对应不上了。
所以我才想到能不能让在DB中不存在的数据也能返回来。
论坛徽章:396
论坛徽章:486
8 万行导入到一张表;用它和你的旧数据做外连接,把结果重新导出到EXCEL.
论坛徽章:396
newkid 发表于
8 万行导入到一张表;用它和你的旧数据做外连接,把结果重新导出到EXCEL.
set markup on
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号为什么SQL in语句查询出错啊_百度知道
为什么SQL in语句查询出错啊
190&#39,身高,综合能力值,国籍 from 数据表 where 身高 between&#39:select 球员英文名,球员中文名,年龄;180' and ';初学,不懂哪儿有问题语句如下
哦 哦 说错了,是between语句,不是in语句
我有更好的答案
球员中文名,综合能力值,没用到in啊,提示什么错误select&nbsp,,;数据表where&between&180&球员英文名,年龄,身高;身高&nbsp,国籍from&nbsp啥意思
采纳率:78%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。sql语句的in里面可以用sql语句吗?_百度知道
sql语句的in里面可以用sql语句吗?
select filename,title,note from qinggan_res where id in (select pictures from qinggan_list_62 where id=1349)为什么循环后只能查出一条
我有更好的答案
可以的。sql语句中的in 里面本来就是一个子查询语句。比如查询所有用户信息,并且用户的课程名是语文的sql语句:select * from user where id in (select id from kecheng where name='语文')
采纳率:47%
来自团队:
你里面那一句查出来是不是就一条啊他是先执行里面的语句,然后外边的id再去匹配里面那SQL查出来的结果的piectures,也就是说你的这个句子就等于select filename,title,note from qinggan_res a inner join qinggan_list_62 b on a.id=b.pictures where b.id=1349
本回答被网友采纳
肯定可以用
你这个没用到循环语句啊
这么写应该没错,你确定查询的结果集不止一条么?
你先执行括号里边的sql,看能查询出来多少
其他3条回答
为您推荐:
其他类似问题
sql语句的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。17:23 提问
sql语句in的用法,在mybatis中sql中in是怎么用的
SELECT a.smid,a.smx,a.smy,a.NAME FROM BusPoint a , BusPointline b
WHERE a.StopID = b.BusPointID AND a.smid in (133,132);
在mybatis框架中,上面的sql语句如何编写?
在mybatis框架中,sql中in是怎么用的?
那位大神知道~~~
按赞数排序
SQL中怎么写,MyBatis 的mapper.xml就怎么写。两者是没有区别的。
你问的应该是in中的值是变量的情况下要怎么写吧。可以参考下面的
List selectByIn(List smids)
select * from BusPoint
where smid in
SQL中怎么写,MyBatis 的mapper.xml就怎么写。两者是没有区别的。
你问的应该是in中的值是变量的情况下要怎么写吧。可以参考下面的
List&BusPoint & selectByIn(List&Integer& smids)
select * from BusPoint
where smid in
&select id="selectByIn"
&foreach collection="smids" item="smid" index="index" open="(" separator="," close=")"&
&/foreach&
导读: select * from txt1 select * from txt2 select * from txt1 where name in (select name from txt2 where chk = 0) select * from txt1 where name not in (select name from txt2 where chk = 0) select * fro......答案就在这里:----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
有两种方式:
第一种为楼上所写,将in中的参数以数组或集合方式传入,xml中的select 用foreach
第二种:参数为字符串,List selectByIn(String ids);
SELECT a.smid,a.smx,a.smy,a.NAME FROM BusPoint a , BusPointline b
WHERE a.StopID = b.BusPointID AND a.smid in (${ids});
注:$没有防sql注册
我遇到的问题是当参数拼成字符串进去后,只会返回字符串中第一个逗号前的数据,让我很惊讶
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 sql语句not in 的文章

 

随机推荐