MySQL查询以特定顺序返回结果,而不按顺序返回


MySQL query to return results in specific order without order by

是否可以在没有默认顺序的情况下进行mysql查询返回值。例如,我使用以下查询

select id_product,name from sample where id_product in ('675','123','745','954').

但是它按照id_product对输出行进行排序。输出:

id_product,Name
123        ,abc
675        ,xzy
745        ,bsh
954        ,dsh

我希望结果应该是这样的,没有默认顺序。

 id_product,Name
 675        ,xzy
123        ,abc    
745        ,bsh
954        ,dsh

任何帮助都将不胜感激。

总是有秩序的。如果使用ORDER BY没有指定任何特定的行,则可以按存储在数据库中的顺序返回行。

我建议在数据库中添加一个Sort列以强制执行自定义订单。无论如何,您可以使用FIND_IN_SET函数使用一个小技巧:

SELECT id_product, name
FROM sample
WHERE id_product IN (675,123,745,954)
ORDER BY FIND_IN_SET(id_product, '675,123,745,954')

演示

如果您想要随机排序:"order by rand()";

如果你想要一个随机订单,你可以这样做:

SELECT id_product,name FROM sample WHERE id_product IN ('675','123','745','954') 
ORDER BY NEWID()

您可能已经在表的id_product列上定义了有序的index。请检查一下。

否则,选择将导致默认的行插入顺序。

请参阅创建索引-MySQL