Spa*_*Kot 5 mysql sql-order-by
在使用IN运算符的MySQL中,我们可以要求MySQL以与IN集相同的顺序返回结果集(记录集)吗?
解释:假设我们有一张桌子
items (item_id, item_name);
和查询:
select * from items where item_id in (1,3,5,7,2,4,6,8);
我们可以得到结果集(记录集),其中记录与IN运算符集的顺序相同.即1,3,5,7,2,4,6,8 of record_ids
事实并非如此; MySQL似乎优化了搜索并提供了默认顺序(与存储在文件系统上的那些记录的顺序相同).
mu *_*ort 11
您可以field在ORDER BY子句中使用MySQL的函数:
select *
from items
where item_id in (1,3,5,7,2,4,6,8)
order by field(item_id, 1,3,5,7,2,4,6,8)
Run Code Online (Sandbox Code Playgroud)
该field函数:
FIELD(str,str1,str2,str3,...)返回的索引(位置)STR在STR1,STR2,STR3,...名单.如果未找到str,则返回0 .
如果所有参数
FIELD()都是字符串,则将所有参数作为字符串进行比较.如果所有参数都是数字,则将它们作为数字进行比较.否则,参数将被比较为double.
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |