2016-02-21 2 views
-4

У меня есть база данных с большим количеством таблиц. В каждой таблице есть столбец с именем «LicenseID» (bigint). Как удалить все строки из всех таблиц, которые содержат значение «2» в столбце «LicenseID»? С уважением!Удаление определенных строк из всех таблиц

+0

Добро пожаловать в stackoverflow. Пожалуйста, прочитайте [ask]. Подсказка: вам нужно показать свои усилия. –

+0

Спасибо всем за ответы. Я использую базу данных сервера Microsoft SQL. Кроме того, мне нужно удалить строки из ВСЕХ таблиц (строки содержат значение 2 в столбце «LicenseID»). BTW Я не имею в виду такие значения, как 22,32 и т. Д. Просто абсолютное значение 2. – Kasper555

ответ

0

Вы не указали, с какой базой данных вы работаете.

Я предполагаю, что SQL Server Сначала проверьте результат с помощью следующего запроса

SELECT * FROM table WHERE LicenseID LIKE '%2%' 

или

SELECT * FROM table WHERE Contains(LicenseID, 2) > 0 

Затем удалить все эти строки с выше условия.

DELETE FROM table WHERE LicenseID LIKE '%2%' 

или

DELETE FROM table WHERE Contains(LicenseID, 2) > 0 

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

+0

Он хочет, чтобы что-то было скорректировано ко всем его таблицам БД, а не по одному – sagi

+0

Вопрос помечен тегом [tag: Sql-сервер] ... –

0

Вы можете использовать INFORMATION_SCHEMA.COLUMNS для генерации операторов удаления динамически. Что-то вроде этого следует сделать трюк:

DECLARE @Sql varchar(max) = '' 

SELECT @Sql = @Sql + 'DELETE FROM '+ TABLE_NAME +' WHERE LicenseID = 2; ' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'LicenseID' 

EXEC(@Sql) 

Причины я использовал INFORMATION_SCHEMA.COLUMNS и не INFORMATION_SCHEMA.TABLES, чтобы предотвратить ошибку в случае, если есть таблица, которая не содержит LicenseID колонки.

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