SQL IN 子查詢返回多個值
阿新 • • 發佈:2019-01-28
下午遇到一個問題,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'));
我還不知道為什麼網上的一些文件中為什麼沒有提到這種寫法。
在這裡寫出來是想分享給大家,另外這也是自己的一個筆記。
如果對這方面比較熟悉的朋友,有不同的看法,還希望多多指教。
另外,**如果自己覺得是對的,自己動手努力實踐出來。
當他人請教時,自己沒有嘗試成功之前,不要盲目否定。**