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

作者: edyucheng (edyucheng)   2017-11-12 17:14:19
我有個資料表,要用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 不支援這樣的語法嗎?
或者 還有什麼更好的作法呢?
作者: funk6478 (大恩)   2017-11-12 22:34:00
where order_no + customer in ('A001John','A002Mary','A003Joe') 這樣不知道可不可以
作者: liisi (小心一點)   2017-11-12 22:44:00
用concat試看看?
作者: cutekid (可愛小孩子)   2017-11-12 23:56:00
推 1 樓(Y)
作者: ishewood (木頭)   2017-11-13 00:28:00
把list轉成兩欄的暫時表,再去join1樓作法要小心'abcxyz'=('abc'+'xyz') or ('ab'+'cxyz')
作者: retsamsu   2017-11-13 09:27:00
分隔符號要小心就沒事了
作者: rockchangnew (rock)   2017-11-13 15:36:00
不建議1樓做法,ishewood作法比較好

Links booklink

Contact Us: admin [ a t ] ucptt.com