我有两个现有的表,想在几列的帮助下创建第三个表。前两个表是;
表一:用户
|id | name | sid |
| 1 | demo | test1 |
| 2 | anu | test2 |
表一:见解
| id | description| name |
| 1 | yes | demoone|
| 2 | no | demotwo|
我想在名为 insight_owner 的新表中插入数据。据我所知,我提出了以下查询,但这给了我以下错误
ERROR 1242 (21000): Subquery returns more than 1 row
使用的查询是
insert into insight_owner (column_one, column_two, column_three, column_four, column_five) VALUES ('1', '0', NULL, (select u.id from users u where u.sid='test1'), (select i.id from insights i)) ;
预期输出是
| column_one| column_two| column_three| column_four| column_five| column_six |
+----+-----------------+--------------------+---------------+-----------+--------------------+
| 1 | 1 | 1 | NULL | 1 | 1 |
| 2 | 1 | 1 | NULL | 1 | 2 |
column_five = 用户 ID column_six = 洞察 ID
最佳答案
INSERT...SELECT 语法正是您要查找的内容(而不是 INSERT...VALUES,后者仅限于每个值列表中每列的单个值)。这允许您使用普通的 SELECT 和 JOIN 语法直接从相关表中选择数据。您还可以硬编码要在每一行中显示的值,就像在普通的 SELECT 语句中一样。基本上,编写 SELECT 语句,让它输出你想要的。然后在它的开头插入一个 INSERT 并将输出发送到所需的表。
insert into insight_owner (column_one, column_two, column_three, column_four, column_five)
select '1', '0', NULL, (select u.id from users u where u.sid='test1'), i.id
from insights i
关于mysql - 使用两个或多个表在表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354255/