MySql: order为0时随机排序,但之前使用数字
MySql: Order randomly when order is 0, but use numbers before
我有这个table
我想检索所有数据,但要按特定顺序检索。我希望它按字段顺序排序,但 0 表示随机且在该字段中的实际数字已排序之后。
所以如果我这样做:
var sqlString = "SELECT * \
FROM 10561_13581_tblOffers \
WHERE isVisible = 1 \
LIMIT " + start + "," + count
我希望结果是:
"bücher oder so" - 订单 1
“frau mit haar”——订单 3
“斯坦” - 订单 0
“ordermy”-订单 0
或者最后两个颠倒,因为它们应该是随机排序的
"bücher oder so" - 订单 1
“frau mit haar”——订单 3
“ordermy”-订单 0
“斯坦”-订单 0
但在这两种情况下,顺序 1 和 3 都是有序的。
我如何进行查询才能获得所需的结果?
(ofc,这可以用更多的订单号和更多的行来完成,订单为 0)
您可以使用
ORDER BY CASE
WHEN order = 0 THEN 99999999
ELSE order END
就像 0 没有特定顺序地出现在最后。
布尔表达式 order = 0
对于 true
的计算结果为 1
或对于 false
的计算结果为 0
并且可以在 ORDER BY
中使用子句:
SELECT *
FROM 10561_13581_tblOffers
WHERE isVisible = 1
ORDER BY `order` = 0, --this will send all 0s at the end of the resultset
`order`
如果您确实希望所有 0
随机排序,您可以添加 RAND()
函数:
ORDER BY `order` = 0,
`order`,
RAND()
我有这个table
我想检索所有数据,但要按特定顺序检索。我希望它按字段顺序排序,但 0 表示随机且在该字段中的实际数字已排序之后。 所以如果我这样做:
var sqlString = "SELECT * \
FROM 10561_13581_tblOffers \
WHERE isVisible = 1 \
LIMIT " + start + "," + count
我希望结果是:
"bücher oder so" - 订单 1 “frau mit haar”——订单 3 “斯坦” - 订单 0 “ordermy”-订单 0
或者最后两个颠倒,因为它们应该是随机排序的
"bücher oder so" - 订单 1 “frau mit haar”——订单 3 “ordermy”-订单 0 “斯坦”-订单 0
但在这两种情况下,顺序 1 和 3 都是有序的。
我如何进行查询才能获得所需的结果? (ofc,这可以用更多的订单号和更多的行来完成,订单为 0)
您可以使用
ORDER BY CASE
WHEN order = 0 THEN 99999999
ELSE order END
就像 0 没有特定顺序地出现在最后。
布尔表达式 order = 0
对于 true
的计算结果为 1
或对于 false
的计算结果为 0
并且可以在 ORDER BY
中使用子句:
SELECT *
FROM 10561_13581_tblOffers
WHERE isVisible = 1
ORDER BY `order` = 0, --this will send all 0s at the end of the resultset
`order`
如果您确实希望所有 0
随机排序,您可以添加 RAND()
函数:
ORDER BY `order` = 0,
`order`,
RAND()