如何在以下条件中避免覆盖查询结果:“in(23,24,22,23)”

时间:2016-11-25 10:49:19

标签: mysql

我有一个这样的sql:

 select name from A where id in (23,24,22,23)

当我在Navicat中运行它时,结果只有一个23的结果。  我的问题是,如何保持查询结果的数量和顺序与(23,24,22,23)相同。

2 个答案:

答案 0 :(得分:0)

如果要维护结果的顺序,请使用order by子句,如

select name from A 
where id in (23,24,22)
order by id;

同样,假设id是表A中的主键列,那么只有一行id = 23。除非您使用UNION ALL

明确说明,否则您希望同一行自动重复

答案 1 :(得分:0)

如果您真的想要获取这样的记录,可以使用field函数获取23,24,22并按此类排序:

select name from A where id in (23,24,22) order by field(id, '23,24,22')

然后使用union all获取另一个23

(select name from A where id in (23,24,22) order by field(id, '23,24,22'))
union all
select name from A where id = 23