SQL IN 子查询返回多个值

来源:互联网 发布:海康130万网络摄像机 编辑:程序博客网 时间:2024/05/16 00:49

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

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

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

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

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

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

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

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

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

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

也就是这样的

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

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

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

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


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

1 0
原创粉丝点击