我有这个疑问:MySQL查询排序查询本身
SELECT `name` FROM `products` WHERE `id` = 0 OR `id` = 4 OR `id` = 2
- 基本上,我想查询由OR语句的顺序(基本上,第一个返回的对象将与排序ID 0,第二个将是4,第三个是2)。 这可能吗?
我有这个疑问:MySQL查询排序查询本身
SELECT `name` FROM `products` WHERE `id` = 0 OR `id` = 4 OR `id` = 2
尝试s
select name from products WHERE id=0 OR id= 4 OR id=2 order by FIELD(id,0,4,2);
FIELD()返回4,2,...列表中索引(位置)0。如果未找到0,则返回0。
注意:这将减慢您的查询一下。
是你需要为
SELECT `name` FROM `products` WHERE `id` = 0 OR `id` = 4 OR `id` = 2
order by field(id,0,4,2)
这里是一个demo 表是不是在你的情况一样使用,以场()函数,但你可能会得到一个想法,它是如何工作的。
我相信你正在寻找FIND_IN_SET()
功能:
SELECT name FROM products WHERE id IN (0,4,3) ORDER BY FIND_IN_SET(id, '0,4,3');
这是另一种思路 -
选择name
FROM products
WHERE id
= 0或id
= 4或id
= 2 ORDER BY CASE WHEN ID = 0 THEN 1 WHEN'ID'= 4 THEN 2 WHEN'ID'= 2 THEN 3 ELSE'ID'END
啊@Notulysses我不好纠正它:-) –