从另一个子查询中插入带有值的行

时间:2016-03-06 12:25:08

标签: mysql subquery sql-insert

我有一张桌子"例子"

 id | name | value
-------------------
 1  | 'ab' |   10
 2  | 'ab' |   30
 3  | 'ef' |   20
 1  | 'gh' |   40
 3  | 'kl' |   40
 1  | 'mn' |   40
 2  | 'mn' |   40

我想为每个id1添加一个像这样的新行:

INSERT INTO example (id, name, value) VALUES (<every id>, 'ij', 50)

因此,在该语句之后,该表应如下所示:

 id | name | value
-------------------
 1  | 'ab' |   10
 2  | 'ab' |   30
 3  | 'ef' |   20
 1  | 'gh' |   40
 3  | 'kl' |   40
 1  | 'mn' |   40
 2  | 'mn' |   40
 1  | 'ij' |   50
 2  | 'ij' |   50
 3  | 'ij' |   50

我知道我可以通过

获得Ids
SELECT DISTINCT id FROM example;

但我不知道如何将两个陈述合并为一个。 那么:我该怎么做?

1 个答案:

答案 0 :(得分:2)

你可以使用insert as select和distinct来完成它,如下所示:

INSERT INTO example
(SELECT distinct ID,'ij',50 FROM example)

如果这3列是唯一的列,按顺序排列,如果不是,则需要在select之前指定(id,name,value)。

选择将在您的情况下返回:

 1  | 'ij' |   50
 2  | 'ij' |   50
 3  | 'ij' |   50

然后将插入