2015-06-11 2 views
0

Каким будет самый быстрый способ удалить все записи в каждой таблице базы данных с помощью id = 0?Использование результата SELECT в качестве имени столбца в предложении WHERE

Было бы просто, если бы каждый стол был его первый столбец с именем id, но в моем случае одна таблица первый столбец с именем id_tag, другой таблицы - id_product и т.д.

Я понял, что я могу получить имя первого столбца по:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
         WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME = 'ps_tag' LIMIT 1 

, но как я могу включить его в DELETE запросе? Мне нужно что-то вроде:

DELETE FROM 'ps_tag' WHERE [first_column] = 0 

Моя первая мысль была:

DELETE FROM 'ps_tag' 
      WHERE (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME = 'ps_tag' LIMIT 1) = 0 

но, очевидно, она не работает.

+0

Вы собираетесь должны динамически создавать заявление. http://stackoverflow.com/questions/10480429/how-to-select-from-dynamic-table-name –

+0

хорошо, что-то быстрее, чем вручную редактировать каждой таблицы хорошо –

+0

Как уже упоминалось вы будете иметь для создания текста SQL, который вы запускаете позже. Если бы мне дали это делать. Хм, сколько записей мы смотрим? Я бы сгенерировал два запроса для каждой таблицы. 1) выберите все строки, которые будут удалены в «связанную временную таблицу». 2) Удалите строки в этой таблице. Легко восстановить, если что-то пойдет не так. –

ответ

1

Это слишком длинный комментарий.

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

Затем загрузите их в Excel.

В другой ячейке, помещенной в строку, как 'delete from @table where @column = 1'.

Затем положить в формуле:

=substitute(substitute(<where the string is>, '@table', <tablename>), '@column', <columnname>)) 

Скопируйте код обратно в интерфейс базы данных и выполнить его.

(И любая таблица будет делать. Я обычно Excel удобно.)