2011-02-10 87 views
7

我有一个电子商务商店,我目前的工作,并有大约300产品,有一个字段名为“product_url”MySQL查询需要:我需要从300个表

这些删除单个领域的所有数据字段包含我需要完全删除的旧网址。

我该如何创建一个查询来替换所有带有空值的数据的“product_url”字段?

+0

你的意思是你有每个产品的单独的表? O.o – 2011-02-10 14:25:09

+0

300个具有相同列名`product_url`的表? – 2011-02-10 14:25:29

回答

25

这会将每个product_url设置为NULL,它当前不为null。

UPDATE table_name 
SET product_url = NULL 
WHERE product_url is not null; 
1

假设所有的条目来填充空值:

UPDATE table_name SET product_url = NULL 
2

你有一个表中的每个产品?如果是这样,我不知道。

否则;

UPDATE products_table 
SET product_url=null 
2

只是一个融会......所有的

UPDATE table_name SET column_name = NULL WHERE column_name = 'product_url' 
4

首先,如果你有300个表(每个产品),你不能写一个查询,将产品的URL设置为NULL。

你必须为每个表(UPDATE table_name SET product_url = NULL,如其他人已经说过)写一个查询。

如果你有一天有10,000个产品,如果你继续这样,你将有10,000个表。这将成为一个维护噩梦,因为你现在可以看到你有300桌的问题。

您的数据库是非规范化的。如果您的产品共享相同的属性,那么它们应该位于一个名为“产品”的表中,并且每个产品都应该表示为一行。只有这样你才能用一个查询来做你想要的。

1

如果你有很多具有相同前缀和相同结构的表,你可以做一个SHOW TABLES LIKE prefix_%。然后遍历此查询的结果集并对每个表运行单独的查询。

0

这将删除该列中的所有数据,而不删除列本身。

UPDATE `table_name` SET `column_name`=null