[SQL ] SQL Server 的IN 語法能查詢多值嗎

看板Database (資料庫)作者 (edyucheng)時間7年前 (2017/11/12 17:14), 編輯推噓3(305)
留言8則, 6人參與, 7年前最新討論串1/1
我有個資料表,要用order_no + customer 兩個欄位來搜尋才能找到唯一的結果 今天我有一支程式,會從client端接收一個List,List中的每個項目包含了order_no 和c ustomer 例如: {('A001', 'John'), ('A002', 'Mary'), ('A003', 'Joe')} 我要用這個List的資料到Order資料表中找出這三筆資料,我用了IN語法如下: SELECT * FROM Order WHERE (order_no, customer) IN (('A001', 'John'), ('A002', 'Mary'), ('A003', 'Joe')) 但不知道為什麼就是跑不出來,是因為MS SQL Server 不支援這樣的語法嗎? 或者 還有什麼更好的作法呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.21.117 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1510478062.A.566.html

11/12 22:34, 7年前 , 1F
where order_no + customer in ('A001John','A002Mary',
11/12 22:34, 1F

11/12 22:34, 7年前 , 2F
'A003Joe') 這樣不知道可不可以
11/12 22:34, 2F

11/12 22:44, 7年前 , 3F
用concat試看看?
11/12 22:44, 3F

11/12 23:56, 7年前 , 4F
推 1 樓(Y)
11/12 23:56, 4F

11/13 00:28, 7年前 , 5F
把list轉成兩欄的暫時表,再去join
11/13 00:28, 5F

11/13 00:29, 7年前 , 6F
1樓作法要小心'abcxyz'=('abc'+'xyz') or ('ab'+'cxyz')
11/13 00:29, 6F

11/13 09:27, 7年前 , 7F
分隔符號要小心就沒事了
11/13 09:27, 7F

11/13 15:36, 7年前 , 8F
不建議1樓做法,ishewood作法比較好
11/13 15:36, 8F
文章代碼(AID): #1Q213kLc (Database)
文章代碼(AID): #1Q213kLc (Database)