mysql多條件查詢,按傳入參數順序顯示

在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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章