1. 程式人生 > >SQL IN 子查詢返回多個值

SQL IN 子查詢返回多個值

下午遇到一個問題,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'));

我還不知道為什麼網上的一些文件中為什麼沒有提到這種寫法。

在這裡寫出來是想分享給大家,另外這也是自己的一個筆記。

如果對這方面比較熟悉的朋友,有不同的看法,還希望多多指教。

另外,**如果自己覺得是對的,自己動手努力實踐出來。
當他人請教時,自己沒有嘗試成功之前,不要盲目否定。**