2015-12-27 5 views
0

Я учу это для школы, и я в замешательстве. Я пытаюсь скопировать информацию между столбцами в одной таблице в одном db, все локально.ОБНОВЛЕНИЕ (B) из (A), если (B) = 0?

В основном:

(мне нужно перебрать и обновить все записи)

UPDATE `my_records` 
SET `realname` = `name` 
WHERE `realname` = 0; 

SELECT * FROM `my_records` SET `realname` = `name` WHERE `realname` = 0; 

Он продолжает говорить мне, что есть ошибка синтаксиса.

Теперь я понимаю, почему они просят меня узнать об этом. Каждая строка в таблице отличается, поэтому, когда я обновляю все столбцы, некоторые строки меняются, а это не так, что это не конечный результат. Я могу попытаться привести пример, но это меня смущает.

DB -> Таблица -> Строка 1 - содержит имя человека -> Row 2 - держит картину человека

  • Обе вещи имеют имя (пример строки 1 David, Row 2 Flower.JPG)

Так что я предполагаю, что они хотят, чтобы я выяснил способ исключить обновление столбца «real_name» на строке 2, где изображение представляет собой JPG, GIF или PNG.

Я думаю, что конечный результат они ищут, когда таблица обновлена:

Row 1 «Давид» «David» Row 2 «flower.jpg»

Тогда это петли снова и снова снова для всех записей.

+1

Вы написали правильное утверждение 'update' в своем вопросе. Если это псевдокод, вы должны попробовать ... – sgeddes

+0

Можете ли вы проверить, используете ли вы правильный тип данных для реального имени в соответствии с тем, что, как я думаю, вы передаете целое число, и может иметь различный тип данных. – Naruto

+0

Предполагая, что 'name' является полем в таблице, это ключевое слово зарезервировано для mysql, поэтому должно быть указано в обратном направлении, то есть' \ 'realname \' = \ 'name \' '. Полный список https://dev.mysql.com/doc/refman/5.5/en/keywords.html – Tristan

ответ

0

Вам необходимо использовать UPDATE вместо SELECT. SELECT заявления возвращают данные, они не изменяют данные.

Таким образом, чтобы вернуть записи будут обновлены в следующем шаге:

SELECT `realname`, `name` FROM `my_records` WHERE `realname` = 0; 

, а затем обновить эти записи: установка

UPDATE `my_records` SET `realname` = `name` WHERE `realname` = 0; 

Обратите внимание, что этот запрос будет обновлять всю таблицу, любая строка, где значение realname эквивалентно 0, значение столбца name той же строки.

Несколько других, возможно, полезные отчеты:

UPDATE `my_records` SET `realname` = `name` WHERE `realname` = ''; 

Это будет влиять на все строки, в которых realname эквивалентно 'пустая строка'

UPDATE `my_records` SET `realname` = `name` WHERE `realname` IS NULL; 

затронет все строки, в которых realname является NULL

+0

На основании вашего ответа мне пришлось отредактировать свой первоначальный вопрос. Спасибо. – Q888

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