SQL IN 子查询返回多个值

4 篇文章 0 订阅
2 篇文章 0 订阅

下午遇到一个问题,IN子查询返回多个值。

网上查了很多文档,资料,都没收获。

问了技术群的同僚,竟然还被嘲笑了。IN 怎么可能匹配多个字段呢!

个人印象中曾经在哪里见到过,所以就觉得不服气。自己慢慢地去试,试出来了。

我们常用的IN 操作是这样的:

select * from tab  t
where t.col1 in ('value1''value2');

但是如果是多个列的取值来自同一个子查询呢?
我们是不是要这样写了?

select * from tab1 t1
where t1.col1 in (select col1 from tab2)
  and t1.col2 in (select col2 from tab2);

现在分享一种简便的方法给大家:

select * from tab  t
where (t.col1,t.col2) in (select col1,col2 from tab2);

也就是这样的

select * from tab  t
where (t.col1,t.col2) in (('value','value1'),('value','value2'));

我还不知道为什么网上的一些文档中为什么没有提到这种写法。

在这里写出来是想分享给大家,另外这也是自己的一个笔记。

如果对这方面比较熟悉的朋友,有不同的看法,还希望多多指教。


另外,**如果自己觉得是对的,自己动手努力实践出来。
当他人请教时,自己没有尝试成功之前,不要盲目否定。**

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值