我有一個包含名爲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