sql - 如何执行连接两个现有表的部分并将其插入新表的查询?

标签 sql

我有一个包含调查的表格和一个包含小部件的表格。在这两个表之间应该有第三个表连接这两个表。以下正是我正在寻找的内容。

Survey:

survey_id   numeric(18, 0)  Unchecked Primary Key
dashboard_id    numeric(18, 0)  Unchecked Foreign Key
survey_title    nvarchar(250)   Unchecked

Widget:

widget_id   numeric(18, 0)  Unchecked Primary Key
dashboard_id    numeric(18, 0)  Checked Foreign Key

这两个表具有共同的dashboard_id(仪表板表的主键)。

问题:

如何根据匹配的仪表板 ID 连接这两个表,并将这个新表插入到我的第三个表中。如何将上述表的两个主键放入新的第三个表中,如下所示:

Survey_link_widget:

survey_link_widget_id   numeric(18, 0)  Unchecked
survey_id   numeric(18, 0)  Unchecked
widget_id   numeric(18, 0)  Unchecked
data_series_name    nvarchar(250)   Unchecked
data_series_displaytitle    nvarchar(250)   Checked

survey_link_widget_id 自动递增,它将自行创建。 Survey_id和widget_id应该来 self 打算根据dashboard_id加入的两个表

此外,将第四列和第五列(data_series_name 和 data_series_displaytitle)添加到我正在查找的插入/连接查询中会很困难吗?

如果您认为我处理这个“链接表”的方式完全错误,请告诉我!我的 SQL 目前确实很生疏,所以我可能只是在做一些愚蠢的事情。

最佳答案

有多种不同的可能性,但以下是适合您的一般想法:

INSERT INTO Survey_link_widget (survey_id, widget_id)
SELECT
    survey_id,
    widget_id
FROM
    Survey INNER JOIN Widget ON Survey.dashboard_id = Widget.dashboard_id

除此之外,您询问是否添加 data_series_namedata_series_displaytitle,当然您可以这样做(只需将它们添加到第一行的逗号分隔列表中即可),但如果你这样做,你将不得不将一些数据放入这些字段中(即,将第三项和第四项添加到 SELECT 子句中)——这可以是一个字段,也可以是静态的(将某些内容放在引号中) .

关于sql - 如何执行连接两个现有表的部分并将其插入新表的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15529206/

相关文章:

mysql - 带奖金的薪资选择 mysql

java - infinispan 配置 xml 错误

sql - 从 CLOB(包含 XML)中提取特定值,同时为表的每一行创建一个分隔字符串。某些行上的 CLOB 值可能为空

sql - 如何通过Hibernate获取数据库版本?

sql - postgres 从函数返回 json

python - 高效存储和分析实验数据(SQL、PYTHON)

python - 如何使用 python 有效地与另一个数据库交互

mysql - SQL SELECT MIN 值与 WHERE 语句

mysql - 获取昨天的unix时间戳日期的随机记录

sql - 数据库可扩展性 : Which is more important, 表的大小或查询的数量?