我有一个包含名为views的列的表。用户每次刷新页面时,都会更新查看次数+1。
即时尝试做什么,是创建一个MySQL查询来输出行的列表根据他们的观点计数,从最高到最低。mysql按从最高值到最低值的顺序显示行
这就是我想会的工作
SELECT * FROM picdb ORDER BY views DESC LIMIT 10
甚至当我观看渐强,其所有走出低谷。
想法?
编辑 列类型为TEXT
解决改变列类型为INT,现在工作得很好。感谢您指出。
我有一个包含名为views的列的表。用户每次刷新页面时,都会更新查看次数+1。
即时尝试做什么,是创建一个MySQL查询来输出行的列表根据他们的观点计数,从最高到最低。mysql按从最高值到最低值的顺序显示行
这就是我想会的工作
SELECT * FROM picdb ORDER BY views DESC LIMIT 10
甚至当我观看渐强,其所有走出低谷。
想法?
编辑 列类型为TEXT
解决改变列类型为INT,现在工作得很好。感谢您指出。
如果您的列类型为TEXT,则默认排序行为将数据视为字符串,因此按字母顺序排序(而非数字)。
将您的列类型更改为数字类型,并且它将正确排序。
SELECT
*
FROM
tbl
ORDER BY
CAST(views AS UNSIGNED) DESC
LIMIT
10
可能会诀窍。真正的问题是为什么你有一个包含文本类型整数的列?
非常感谢你,你救了我! – 2016-08-02 11:04:38
select a,b,CAST(views AS UNSIGNED) c from picdb order by c desc limit 10
这看起来像经典的字母数字排序问题。如果列类型是文本,那么您可能会看到类似于1,10,15,20,3的顺序。换句话说,它按文本值而不是整数值进行排序。
你可以列更改为数字类型,或者你可以这样做:
SELECT * FROM picdb ORDER BY CONVERT(views, UNSIGNED INTEGER) DESC LIMIT 10
然而,这无法在views
列采取任何指数的优势。如果这确实代表了它,那么将列更改为数字类型会更好。
如果你想显示你的表格行从较高值到较低值然后使用此查询。
query = "SELECT * FROM CurrencyTable ORDER BY CAST(currency_rate AS UNSIGNED) DESC";
如果你想从较低值的行显示更高的价值然后使用该查询
query-2 = "SELECT * FROM CurrencyTable ORDER BY CAST(currency_rate AS UNSIGNED) ASC";
什么意见栏的日期类型? – Nate 2009-08-10 21:01:54
忘记提及...发布更新 – mrpatg 2009-08-10 21:02:12
为什么列类型文本?除此之外,还会有其他数字吗?如果它是一个数字字段,它可能会正确地命令。 – 2009-08-10 21:04:15