【发布时间】:2020-08-31 12:00:48
【问题描述】:
我有一个字段:例如包含 19、2、23 的用户 ID,我根据任意添加到房间的用户 ID 填充该字段。我根据这些用户标识列出了相应的名称。
现在我从这个查询中得到 Richard, Evan, James (19 = Richard, 2 = Evan, 23 = James)。
我想做的是在查询时对数组(字段)进行排序,使其为 2、19、23,并返回名称 Evan、Richard、James。
所以查询看起来像这样:
SELECT c.*,c.NAME as PAGE, ASORT(c.USERIDS) as USERIDS, p.*
FROM TBL_CONTENT c, TBL_PAGE p
WHERE c.PAGEID = p.ID AND FIND_IN_SET(?, c.USERIDS)
应该看起来像(帮我解决这个问题)?
当然,ASORT 函数不存在 - 我只是将它作为我正在尝试做的一个示例。
这里有什么帮助吗? 谢谢!
【问题讨论】:
-
您首先不应该将逗号分隔的列表放在表格列中。如果你把它放在一个单独的表中,你可以使用
GROUP_CONCAT和它的ORDER BY选项。 -
那为什么 FIND_IN_SET 甚至是一个函数呢?
-
因为人们多年来一直在犯这个错误,而 MySQL 选择了适应他们。
-
但是你可以用它们做的事情非常有限,排序不是其中之一。
-
你用的是哪个mysql版本?