2016-11-25 63 views
0

我有一个这样的SQL:如何避免在查询结果改写当一个where条件,如:“在(23,24,22,23)”

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

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

+1

** ** 1为什么你有'23'屡禁不止?这是故意的吗? ** 2。**如果有匹配的记录,它会出现。你是否有ID为23,24,22的记录 - 所有三个? –

+0

24 22有行吗?按ID添加订单 – Moudiz

+0

是的,先生,我重复了23故意。因为在我目前的项目中,我有一个类似的要求。表A中有记录:22,23,24。当我传递ID 23,24,22,23时,我想获得四条记录,所以如何编写sql。 – kuzicala

回答

0

如果你想保持结果的顺序,然后使用order by条款像

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

再次,假设id是表中A一个主键列,然后将只有一个行与id = 23。你怎么能指望同一行即可自动重复,除非你把它明确使用UNION ALL

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 
+0

谢谢,这对我很有用。 – kuzicala

相关问题