簡體   English   中英

ORDER BY FIELD(column_name,(SELECT))

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM