2016-06-01 1 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 прикрепить номер строки для каждой строки в таблице. Таким образом, должен быть выбран способ выбора по этому номеру. Условие LIMIT не является случаем, поскольку оно ограничивает уже выбранные строки, например. строки в списке, а не в таблице. Также порядок во время select и modify может отличаться, поэтому использование 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 - скачет п строк уведомление, что он использует свой заказ

0

Если текущий тип столбца INT и вы пытаетесь переключиться на DECIMAL(9,4) я бы выбрать все записи, которые содержат значения больше 5 цифры (9-4), который является 99999.

Так что

SELECT * 
FROM mytable 
WHERE mycolumn>99999 
+0

И отрицательные значения также могут быть вне диапазона. – spencer7593

Смежные вопросы