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