Установка переменной, равной столбцу в MySQL - PullRequest
2 голосов
/ 30 апреля 2019

Я пытаюсь установить столбец Player_Season равным столбцу Year моей таблицы. Я знаю, как сделать это без переменных, но я не очень хорошо знаком с переменными в MySQL и хотел бы знать, как это сделать в образовательных целях. Это влияет на строки, когда я просто ввожу число вместо Year. При вводе имени столбца появляется сообщение об ошибке Unknown column 'Player_Season' in 'field list

SET @var_name = `Year`;
UPDATE retrosheet.batting_table SET Player_Season = @var_name WHERE id IS NOT NULL;

1 Ответ

0 голосов
/ 30 апреля 2019

Это то, что вы можете сделать на сервере SQL ... верно?

Нет, вы не можете использовать переменную или подготовленный параметр оператора в качестве имени столбца в любой марке базы данных SQL.

Вы можете интерполировать имя столбца в строку и подготовить оператор из этого. Вот пример, который работает в MySQL:

SET @var_name = 'Year';
SET @myquery = CONCAT('UPDATE retrosheet.batting_table SET Player_Season = ',
  @var_name, ' WHERE id IS NOT NULL';

PREPARE stmt FROM @myquery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Важной частью является то, что все таблицы и столбцы должны быть зафиксированы во время подготовки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...