2016-02-21 125 views
-4

我有一个包含大量表的数据库。 在每个表中都有一个名为“LicenseID”(bigint)的列。如何删除所有表中包含“LicenseID”列中值“2”的所有行? 此致敬礼!删除所有表中的特定行

+0

欢迎使用stackoverflow。请阅读[问]。提示:你需要展示你的努力。 –

+0

谢谢大家的回复。 我正在使用Microsoft SQL Server数据库。另外,我需要从所有表中删除行(行中包含“LicenseID”列中的值2)。顺便说一句,我不是说像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列的表中的错误的原因。