2017-01-10 5 views
0

У меня есть несколько таблиц с соответствующими именами столбцов и хочу сделать заявление обновления, затрагивающее 1 столбец 4 конкретных таблиц, как это:UPDATE указаны несколько таблиц с тем же именем столбца

UPDATE table1, table2, table3, table4 
SET table1.column_1 = 'value', table2.column_1 = 'value', table3.column_1 = 'value', table4.column_1 = 'value' 
WHERE table1.column_id = 'value' OR table2.column_id = 'value' OR table3.column_id = 'value' OR table4.column_id = 'value' 

Это не работает, и я гугл много часов для ответа, и ив нашел это https://stackoverflow.com/a/19797529/1824324:

Select 'UPDATE ' + TABLE_NAME + ' SET CreatedDateTime = ''<<New Value>>'' ' 
From INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'CreatedDateTime' 

и с небольшой настройкой:

SELECT 'UPDATE ' + TABLE_NAME + ' SET column_1= ''Value'' where column_id=''value''' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'column_1' 

Теперь моя проблема в том, что я не хочу, чтобы каждая таблица с этим конкретным столбцом обновлялась только из таблицы1, table2, table3 и table4. Как вырезать «FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME =« column_1 »и заменить на 4 таблицы?

+0

Что это такое ... MySQL или SQL-сервер? Пожалуйста, отредактируйте теги, чтобы оставалось только релевантное. – Bohemian

+0

Является ли этот SQL Server или Mysql конкретным? – prosti

+0

Извините, его mysql – user1824324

ответ

2

Я считаю, что вы говорите о MySQL из-за таблиц, которые вы используете.

Просто фильтр колонки TABLE_NAME:

SELECT 'UPDATE ' + TABLE_NAME + ' SET column_1= ''Value'' where column_id=''value''' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'column_1' 
AND TABLE_NAME IN ('table1', 'table2') 
+0

Работает, спасибо, но можно ли это сделать, не проходя через каждую колонку в каждой таблице из «INFORMATION_SCHEMA.COLUMNS»? – user1824324

+0

Он фильтрует таблицы и столбцы вплоть до вашего списка и создает инструкцию SQL только для соответствующих. Невозможно извлечь отфильтрованные строки из таблицы, не проходя через таблицу, или это индекс. –

+0

@Raj More said это: вы фильтруете записи, а базы данных на самом деле хороши! – jfneis

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