按最后一个值排序MySQL结果

时间:2014-05-02 13:43:48

标签: php mysql sql arrays

我设置了一个MySQL表,其中包含一个名为clicks的字段。它包含按空格分隔的某些横幅的点击次数(例如" 9 80 47 306")。字段的类型是文本。 我希望得到整个表行并按该字段中的最后一个值进行排序(在这种情况下它将是306)。

到目前为止,我所做的事情显然不起作用:

SELECT * FROM banners WHERE active = "1" ORDER BY clicked DESC

有没有办法只使用SQL来实现这个目标?

提前致谢!

2 个答案:

答案 0 :(得分:4)

substring_index()与-1:

一起使用
SELECT *
FROM banners
WHERE active = "1"
ORDER BY substring_index(clicked, ' ', -1) DESC;

我应该补充一点,我同意这是一种存储数据的坏方法。你应该有一个联结/关联表。每个横幅都有一行,点击列。

编辑:

正如Joachim的评论明智地指出的那样,我们可能希望将其更改为用于排序的数字。在MySQL中,我更喜欢+ 0,因为它不报告错误:

SELECT *
FROM banners
WHERE active = "1"
ORDER BY substring_index(clicked, ' ', -1) + 0 DESC;

Ugg,将数字存储为字符串。

答案 1 :(得分:1)

尝试以下方法: 按substr排序(点击,长度(点击-3),3)