SQL IN 子查詢返回多對值


我們常用的IN 操作是這樣的:

select * from tab t
where t.col1 in ('value1''value2');
1
2
但是如果是多個列的取值來自同一個子查詢呢?
我們是不是要這樣寫了?

select * from tab1 t1
where t1.col1 in (select col1 from tab2)
and t1.col2 in (select col2 from tab2);
1
2
3
現在分享一種簡便的方法給大家:

select * from tab t
where (t.col1,t.col2) in (select col1,col2 from tab2);
1
2
3
也就是這樣的

select * from tab t
where (t.col1,t.col2) in (('value','value1'),('value','value2'));
1
2
3
我還不知道為什么網上的一些文檔中為什么沒有提到這種寫法。

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

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

另外,**如果自己覺得是對的,自己動手努力實踐出來。
當他人請教時,自己沒有嘗試成功之前,不要盲目否定。**
---------------------
作者:心隨自在飛
來源:CSDN
原文:https://blog.csdn.net/xiesq5112/article/details/52154169
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM