mysql - 使用两个或多个表在表中插入数据

标签 mysql

我有两个现有的表,想在几列的帮助下创建第三个表。前两个表是;

表一:用户

 |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/

相关文章:

MySQL如何创建一对零或多关系

mysql - 检索和插入日期时间时 MYSQL 的默认行为是什么?遇到一个有趣的时区偏移问题

mysql - CF10 , MYSQL SQL_SELECT_LIMIT=默认值

php - 在日期之间搜索(日期为 VARCHAR)

php - 从mysql获取数据时出现数据库错误

python - Python 如何查看另一个客户端对 MariaDB 所做的更改?

php - 如何使用 while() 和 array() 从 $_GET 变量打印多个 ID

php - 如何从一张表中提取大量多行?

mysql - 使用mysql的两种分组select方法,哪个更快,哪个更好?

mysql - SQL 到 Zend_Db_Table