Py学习  »  DATABASE

MySQL 8.0按条件订购

coding-scripting • 2 年前 • 1057 次点击  

我想从products表中获取数据。我必须按价格排序,但首先它显示的是那些价格在给定的最大值和最小值之间的人。

标题 价格
刺激1 10
Prod 2 8.
刺激3 15
刺激4 11
刺激5 12
Prod 6 20
Prod 7 24

如果最小值=10,最大值=15

结果应该是这样的顺序: 产品1、产品4、产品5、产品3、产品2、产品6、产品7

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131491
 
1057 次点击  
文章 [ 3 ]  |  最新文章 2 年前
SomeGuy
Reply   •   1 楼
SomeGuy    2 年前

你也可以简单地将2个选项组合成一个 协会 .

select * from test where value >= 10 and value <= 15
union
select * from test where value < 10 or value > 15

Select Demo

nbk
Reply   •   2 楼
nbk    2 年前

您可以使用CASE HWEN来确定这两个组。

价格中间有1英镑

SELECT * FROM product
ORDER By CASE WHEN `price` BETWEEN 10 AND 15 Then 1 
ELSE 2 END ASC, `price` ASC
Title  | price
:----- | ----:
Prod 1 |    10
Prod 4 |    11
Prod 5 |    12
Prod 3 |    15
Prod 2 |     8
Prod 6 |    20
Prod 7 |    24

db<>不停摆弄 here

forpas
Reply   •   3 楼
forpas    2 年前

可以按布尔表达式排序 price BETWEEN 10 AND 15 DESC 先是 price :

SELECT *
FROM tablename
ORDER BY price BETWEEN 10 AND 15 DESC, price;

看到了吗 demo .