我有一个这样的SQL:如何避免在查询结果改写当一个where条件,如:“在(23,24,22,23)”
select name from A where id in (23,24,22,23)
当我在Navicat运行它,结果只有一个结果为23. 我的问题是,如何保持查询结果的数量和顺序与(23,24,22,23)相同。
我有一个这样的SQL:如何避免在查询结果改写当一个where条件,如:“在(23,24,22,23)”
select name from A where id in (23,24,22,23)
当我在Navicat运行它,结果只有一个结果为23. 我的问题是,如何保持查询结果的数量和顺序与(23,24,22,23)相同。
如果你想保持结果的顺序,然后使用order by
条款像
select name from A
where id in (23,24,22)
order by id;
再次,假设id
是表中A
一个主键列,然后将只有一个行与id = 23
。你怎么能指望同一行即可自动重复,除非你把它明确使用UNION ALL
如果你真的想获取这样,你可以使用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
谢谢,这对我很有用。 – kuzicala
** ** 1为什么你有'23'屡禁不止?这是故意的吗? ** 2。**如果有匹配的记录,它会出现。你是否有ID为23,24,22的记录 - 所有三个? –
24 22有行吗?按ID添加订单 – Moudiz
是的,先生,我重复了23故意。因为在我目前的项目中,我有一个类似的要求。表A中有记录:22,23,24。当我传递ID 23,24,22,23时,我想获得四条记录,所以如何编写sql。 – kuzicala