2016-06-01 18 views
-2

修改列的MySql報告錯誤後:如何在MySql中按行數選擇行?

ALTER TABLE MyTable MODIFY mycolumn DECIMAL(9,4) 
[2016-05-31 15:43:03] [22001][1264] Data truncation: Out of range value for column 'mycolumn' at row 33934497 

的問題是如何使用數33934497選擇行?

重要事項

據我瞭解MySQL的附加行號的每一行的表。所以必須有一個選擇這個數字的方法。 A LIMIT子句不是一種情況,因爲它限制了已選擇的行,例如, select中的行,而不是表中的行。 selectmodify聲明中的順序也可以不同,所以使用LIMIT不是一個解決方案。

修訂

關於最大值和最小值在表中的信息:

select Max(mycolumn) from MyTable = -333240.0000

select Min(mycolumn) from MyTable = 1000000.0000

1000000-333240適合於DECIMAL(9,4)

+0

你想'SELECT'?這是一個'ALTER TABLE'請求。任何行標識符MySQL都不會故意暴露。你的問題真的很混亂。你在做什麼? – tadman

+0

它是如何理解MySQL「將行號附加到表中的每一行」?當表格中間的一行被刪除時,MySQL是否也會自動更改連接到所有後續行的行號?表中的行的順序是否會影響MySQL假定附加的行號? **否。**不會發生。 MySQL不會*將行號附加到表中的每一行。 – spencer7593

+0

好吧,假設它沒有附加行號,那麼這是什麼意思呢?在第33934497行?如果它報告有關1行的「某個數字」的錯誤,那麼必須有一條到這樣的行的路,否? – Cherry

回答

-1
SELECT 
... 
OFFSET 33934496 
LIMIT 1 

OFFSET - 跳過n行,它使用您的ORDER BY

0

通知,如果您當前的列類型是INT和你想切換到DECIMAL(9,4)我會選擇含有大於5的值的所有記錄數字(9-4),這是99999

所以才

SELECT * 
FROM mytable 
WHERE mycolumn>99999 
+0

負值也可能超出範圍。 – spencer7593