0

当前查询,不起作用:

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 的第二个参数,那么它就可以工作。但是当我在一个查询中这样做时,它没有,它根本不使用任何顺序。

4

2 回答 2

2

您应该在这种特殊情况下使用 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

?

于 2013-06-30T13:58:16.360 回答
0

这个怎么样

SELECT *,(SELECT GROUP_CONCAT(sum ORDER BY sum SEPARATOR ',') FROM users LIMIT 1) as mysum
FROM users ORDER BY mysum ASC
于 2013-06-30T13:59:54.370 回答