在mysql中進行查詢,對同一個字段,存在多個參數值進行查詢
比如在下面的表(book_table)中
id | book_name | author | nationality |
1 | 老人與海 | 海明威 | 美國 |
2 | 斷舍離 | 山下英子 | 日本 |
3 | 小王子 | 託萬·德·聖·埃克蘇佩裏 | 法國 |
我們使用如下sql:
SELECT * FROM book_table WHERE id IN ('2', '1', '3');
結果會是:
id book_name author nationality
1 斷舍離 山下英子 日本
2 老人與海 海明威 美國
3 小王子 託萬·德·聖·埃克蘇佩裏 法國
順序仍然是按照id的升序排列
如果我們向要在結果集中使用 2 1 3的順序,就需要對結果集也排序
SELECT * FROM book_table WHERE id IN ('2', '1', '3')
ORDER BY FIELD(id, '2', '1', '3');
結果會是:
id book_name author nationality
2 老人與海 海明威 美國
1 斷舍離 山下英子 日本
3 小王子 託萬·德·聖·埃克蘇佩裏 法國
如果在mybatis的xml文件中,可以這樣寫
<select id="getBookInfo" parameterType="java.util.Arrays" resultType="java.util.Map">
SELECT * FROM book_table
WHERE id in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
ORDER BY FIELD(id,
<foreach collection="list" item="item" separator=",">
#{item}
</foreach>
)
</select>