2017-01-26 2 views
2

У меня была эта странная ошибка в коде моей компании из предложения SQL, которая в основном обновляла все строки из таблицы, когда мы хотели только обновить один. Код был следующим.Апоптопы в SQL, выбирая всю таблицу

UPDATE table SET 'disconnections'=value WHERE 'connections'=(SELECT MAX('connections') FROM table) 

Где апостроф, окружающий колонку, обозначает, где явно неправильно. Таким образом, это обновление всех строк в таблице; мы удалили их, и предложение работало, как ожидалось. С чем это связано?

Спасибо!

+1

Какую базу вы используете? Вы уверены, что символ «а не'? –

+0

укажите правильную СУБД, пожалуйста, – ADyson

+0

В одиночных кавычках ANSI SQL для строковых литералов, например. '' некоторый текст''. Используйте двойные кавычки для идентификаторов, например. '«Имя столбца»'. – jarlh

ответ

3

Вопрос находится в MAX('connections'). Очевидно, вы хотите использовать `` вместо одиночных квот ''. В вашем случае 'connections' является строковой константой, а не именем поля. Итак, MAX(constant) = constant. Это условие TRUE для всех записей в вашей таблице, так как оно не зависит от поля с именем `connections`.

Я думаю, что это MySQL, поэтому, если вы хотите направить имя поля, вы должны использовать `` вместо ''.

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