[英]ORDER BY FIELD (column_name, (SELECT ))
當前查詢,不起作用:
SELECT *
FROM users
ORDER BY FIELD(sum, (
SELECT GROUP_CONCAT(sum ORDER BY sum SEPARATOR ',')
FROM users
LIMIT 1
) ASC
我想根據總和通過自定義順序選擇users
。 如果我從查詢SELECT GROUP_CONCAT(sum ORDER BY sum SEPARATOR ',') FROM users LIMIT 1
,然后將其添加到FIELD的第二個參數,那么它可以工作。 但是當我在一個查詢中執行此操作時,它不會,它根本不使用任何訂單。
在這種特殊情況下你應該使用FIND_IN_SET:
SELECT *
FROM users
ORDER BY FIND_IN_SET(sum, (
SELECT GROUP_CONCAT(sum ORDER BY sum SEPARATOR ',')
FROM users
LIMIT 1
) ASC
FIELD期望一個項目列表:
FIELD(sum, sum1, sum2, sum3, sum4)
而FIND_IN_SET需要一個包含逗號分隔值列表的字符串:
FIND_IN_SET(sum, 'sum1,sum2,sum3,sum4')
但為什么不呢:
SELECT *
FROM users
ORDER BY sum DESC
?
這個怎么樣
SELECT *,(SELECT GROUP_CONCAT(sum ORDER BY sum SEPARATOR ',') FROM users LIMIT 1) as mysum
FROM users ORDER BY mysum ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.