mysql/sqlserver where in傳參數的問題 參數:@p0=1,2,3,4 1.我們普通的查詢如下: select *from table_name t where t.field1in (1,2,3,4,...); 如果需要傳參數的話 select *from table_name t where t.field1in (@p0); 這樣最終的sql是select *from table_name t where t.field1in (‘1,2,3,4,...‘); 只能查出t.field1=1的結果(具體為什麼能查出第一個記錄待研究) 要想所有參數都能查出的話這樣是不行的,這時候需要使用第二中解決方案 2.find_in_set 使用這個方法來搞定 select *from table_name t where find_in_set(t.field1,'1,2,3,4'); 下面是相關排序和sqlserver的解決方案 MySQL/sqlserver查詢in操作 查詢結果按in集合順序顯示 select * from ibs6_terminal_adv_inf where id in (16,14,15) order by field(id,16,14,15) select * from ibs6_terminal_adv_inf where id in (16,14,15) order by find_in_set(id,'16,14,15') select * from ibs6_terminal_adv_inf where id in (16,14,15) order by substring_index('16,14,15',id,1) 結果就是按順序顯示了 sqlserver 用以下的語句 select * from ibs6_terminal_adv_inf where id in (16,14,15) order by CHARINDEX(','+ltrim(id)+',',',16,14,15,')" 這個方法沒有測試過,有測試過的同學可以發一下結果 注意了,裡面有很多逗號,一個都不能少哦~~~