Если существует, тогда обновите в MySQL - PullRequest
0 голосов
/ 13 января 2019

Впервые в MySQL, нужна помощь в переводе следующего запроса в MySQL

If exists (select * from INFORMATION_SCHEMA.COLUMNS where table_name= 'MyTable' and column_name = 'MyColumn') 
    begin 
            update MyTable set MyColumn='' where Code=21 
    end; 

1 Ответ

0 голосов
/ 13 января 2019

На основе комментариев, опубликованных по вашему вопросу, приведен фрагмент кода, который должен ответить на ваши вопросы. Он работает, сначала проверяя, существует ли столбец в INFORMATION_SCHEMA, а затем динамически формируя подготовленный, а затем выполняемый SQL-запрос. Если столбец не существует, вместо UPDATE выполняется фиктивный запрос. Я проверил это в этой базе данных fiddlde .

SET @dbname = DATABASE();
SET @tablename = "my_table";
SET @columnname = "my_column";

-- check if the column exists
SELECT COUNT(*) INTO @cnt 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
    (table_name = @tablename)
    AND (table_schema = @dbname)
    AND (column_name = @columnname)
    ;

-- build a dynamic SQL statement
SET @preparedStatement = (SELECT IF(
  @cnt > 0,
  CONCAT("UPDATE ", @tablename, " SET ", @columnname, " = '' WHERE my_code = 21;"),
  "SELECT 1"
));

-- run the statement
PREPARE updateIfExists FROM @preparedStatement;
EXECUTE updateIfExists;
DEALLOCATE PREPARE updateIfExists;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...