SQL IN 子查詢返回多個值

2021-07-16 08:08:49 字數 941 閱讀 1333

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

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

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

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

另外,**如果自己覺得是對的,自己動手努力實踐出來。

當他人請教時,自己沒有嘗試成功之前,不要盲目否定。**

sp executesql返回多個值

declare sql nvarchar 2000 declare cc int declare ss int select sql n select c select count from yg select s select sum b id from yg execute sp execute...

ORA 01427 單行子查詢返回多個行

問題情境之一的模擬 select a.sname,b.score,select c.tel from tab c c where c.no a.no tel from tab a a,tab b b where a.id b.id 執行指令碼,報錯 ora 01427 單行子查詢返回多個行 原因 查...

方法out(返回多個值)

static void main string args foreach int s in intnum 遍歷,自己看一下隨機數組元素後的陣列 int result 定義乙個變數,用於接收陣列的和 int max 用於接收陣列的最大值 int min 用於接收陣列的最小值 result comput...