2016-08-30 101 views
1

我有一個數據庫的一些值,如從0到100萬。但是,如果我想選擇最高值,它始終不起作用,就像它可以在圖像上看到較低的數量和較大的數字一樣。MYSQL值錯誤

enter image description here

我試圖SELECT * FROM listings ORDER BY value DESC但它沒有給出最高值,也與ASC不先給最低值。

我真的很希望我能從這裏得到幫助。

+0

是'value'領域的整型字段或varchar字段?如果它是一個varchar字段,那麼一些值是否包含空格和內容? –

+0

你是什麼意思最高價值?表中最近的條目或某個整數鍵最多的行? –

+0

@TheOneandOnlyChemistryBlob我需要所有的值由DESC而不只是一個數字。 –

回答

3

在這裏你去:

SELECT * FROM listings ORDER BY length(value) DESC, value DESC 
+0

謝謝!這工作。 –

0

用途:

SELECT MAX(value) or SELECT MIN(value).

如果你只是想最高或最低值。

1

從附圖中可以清楚地看出value字段是作爲字符串排序的,而不是數字。

如果value字段僅包含整數(如嵌入式圖像所示),則將列的數據類型更改爲其中一種整數數據類型。

否則,您可以使用order by中的cast()函數將value字段的內容轉換爲數字,但是,如果您有非數字值,則它們的值將不同地轉換爲數字。

+0

「值」類型是文本和@Syed Noman答案工作。 –

+0

但是,如果存儲在此字段中的數據實際上是數字,那麼您可以使用雙訂單子句,然後將錯誤的數據類型分配給該字段。數字數據類型需要更少的存儲空間,並且可以更快地訂購。如果該字段可以保存非數字值,那麼Syed Noman的答案可以產生相當有趣的結果。 – Shadow

0

我已經在我的數據庫

SELECT * FROM listings ORDER BY value ASC 
SELECT * FROM listings ORDER BY value DESC 

測試這兩種情況下ASCDESC(這就是爲什麼作爲答案發布較少的聲譽),它完全可以解釋嗎?

0

演員爲整數,然後訂購吧:

SELECT * FROM listings 
ORDER BY CAST(`value` AS SIGNED) DESC