【问题标题】:Inserting data from a join within tables从表中的联接插入数据
【发布时间】:2016-04-27 04:14:14
【问题描述】:

我试图弄清楚如何使用来自另一个表的组引用来扩展一个 company_ids 表。对于给定的 company_name,我想获取它的 company_id,将它们与 company_groups 表连接,并获取它们的 group_id。从那里,我想获取与 group_id 关联的每个 company_id,并将它们插入到带有正确 company_name 的公司表中。

结构有点不典型。单个公司名称可以有多个 ID,因为 ID 不用作单个公司的唯一标识符。我正在尝试确保将所有这些都复制到公司表中。我确信有一个相当简单的连接命令,但我从来都不擅长在它们内部连接表。任何人都可以帮忙吗?谢谢!

+---------------+
|   companies   |
+---------------+
| company_id PK |
| company_name  |
+---------------+

+----------------+
| company_groups |
+----------------+
| company_id PK  |
| group_id       |
+----------------+

这是一个例子。在公司表中,我有公司“Tesla”,具有三个不同的 ID。

+--------------+------------+
| company_name | company_id |
+--------------+------------+
| Tesla        |     647552 |
| Tesla        |     927572 |
| Tesla        |     748563 |
+--------------+------------+

在 company_groups 表中,每个 group_id 都有一个或多个 company_id。

+----------+------------+
| group_id | company_id |
+----------+------------+
| 227      |     647552 |
| 227      |     111743 |
| 227      |     111842 |
+----------+------------+

我想将 company_name 与多个 group_id 匹配,然后查找与该组关联的所有 company_id。然后将新的 company_ids 插入到公司表中,如下所示:

+--------------+------------+
| company_name | company_id |
+--------------+------------+
| Tesla        |     647552 |
| Tesla        |     927572 |
| Tesla        |     748563 |
| Tesla        |     111743 |
| Tesla        |     111842 |
+--------------+------------+

【问题讨论】:

  • 在您的公司表中,您有一个公司有几个 company_Id?您能否更新您的问题并举例说明您的意思。不仅仅是表格的描述。
  • 我添加了一个例子。希望现在会更清楚一点。

标签: mysql join


【解决方案1】:

当 where 子句中出现相同的表名时,不能插入到表中。

您可以使用临时的第三张表来完成这项工作

再想想,你的问题要么好笑,要么不够清楚,请提供你的示例数据,以便我更新我的答案

【讨论】:

    【解决方案2】:

    我想通了。嵌套查询效果很好:

    REPLACE INTO companies (company_name, company_id)
    SELECT a.company_name, company_groups.company_id
    FROM
    (
    SELECT group_id, company_groups.company_id, companies.company_name
    FROM companies
    JOIN company_groups
    ON companies.company_id=company_groups.company_id
    GROUP BY group_id
    ) a
    JOIN company_groups
    ON company_groups.group_id=a.group_id
    GROUP BY company_id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      相关资源
      最近更新 更多