【发布时间】:2020-03-26 18:25:12
【问题描述】:
感谢您的光临。我知道基本的 SQL 语法,但似乎找不到完成这项任务的方法。
我需要创建一个存储过程,将数据从一个表插入另一个表,同时从许多其他表中检索数据。假设我有这些带有列的表:
-
users- 名称(varchar)
- sub_id (int)
- dub_id (int)
-
tmp_users- 名称(varchar)
- 子名称(varchar)
- dub_name (varchar)
-
subs- id (int)
- 名称(varchar)
-
dubs- id (int)
- 名称(varchar)
翻译成伪代码我应该这样做:
INSERT INTO users (name, sub_id, dub_id)
ALL ROWS FROM tmp_users VALUES (
name = tmp_users.name,
sub_id = SELECT id FROM subs WHERE tmp_users.sub_name = subs.name,
dub_id = SELECT id FROM dubs WHERE tmp_users.dub_name = dubs.name,
)
在措辞中,我需要将来自tmp_users 的所有行插入users,以保留col tmp_users.name,但检索基于*_name 列的所有其他表的传入ids。我应该如何处理这项任务?
【问题讨论】:
-
有 两种 形式的 INSERT 语句..
INSERT ... VALUES和INSERT ... SELECT... 看起来您想要第二种形式,它不使用 VALUES 关键字...首先编写一个 SELECT 语句,该语句返回要插入的行集,然后对其进行测试。然后你可以在 SELECT 前面加上INSERT INTO foo (fee, fi, fo, fum)
标签: mysql sql database sql-insert