MySQL创建表,如果存在,则覆盖新值[不使用DROP TABLE]

时间:2018-11-20 09:51:11

标签: mysql database

我正在创建带有查询的表。

示例(下面有基本查询):

CREATE TABLE teste AS 
SELECT "John" as 'Name', "Dohn" as 'Surname', 18 as 'Age'

好的,我们将表创建为teste。

现在我将在1小时内运行此查询;

CREATE TABLE teste AS 
SELECT "Selim" as 'Name', "Kenny" as 'Surname', 20 as 'Age'

但是它说“表已经存在”。
我想用覆盖的新行更新此表。
我不能用 如果表存在DROP TABLE 因为,在我的查询运行表被删除之前,如果有人想显示该表,则会产生错误

我不想保留旧行数据,我想将新行数据覆盖为新行。 当新查询结果准备就绪后,请删除旧行并添加新行。

在寻找答案。 祝你有美好的一天!

编辑: 简单的例子:

此表列出了销售最畅销的10种产品,每1小时就会有一个查询。当查询结果准备就绪时,它会获得具有大量Joins,Subqueries等信息的十大畅销产品,然后将新的十大畅销产品覆盖为旧的十大畅销产品。我的意思是,这10个最畅销的产品表永远不能为空。 (就像先截掉一样)

2 个答案:

答案 0 :(得分:0)

可以使用“截断表查询”代替使用删除表。    它将仅截断表,然后您可以添加新行。

答案 1 :(得分:0)

尝试一下

  CREATE TABLE <table_name> IF NOT EXISTS
  TRUNCATE TABLE <table_name>