【问题标题】:INSERT and INNER JOIN MYSQL combinationINSERT 和 INNER JOIN MYSQL 组合
【发布时间】:2016-09-28 00:03:01
【问题描述】:

我有两张桌子。一种是“业务”结构如下:

business_id | name | linkto_category_id | business_category_description

另一个保存类别列表的“business_category”

business_category_id | business_category_description

现在我想选择 'business' 中的所有条目,其对应的 'linkto_category_id' 等于 'business_category' 表中的 'business_category_id',然后将 'business_category_description' 插入到 'business' 表中。

这就是我目前所拥有的......

INSERT INTO business(business_category_description)
(SELECT business_category.business_category_description, business_category.business_category_id, business.linkto_category_id
FROM business
INNER JOIN business_category
ON business.linkto_category_id=business_category.business_category_id);

【问题讨论】:

  • 我认为您可能想要更新而不是插入。 Insert 将添加仅填充 Business_category_description 的新行(或多行)。

标签: mysql join inner-join


【解决方案1】:

一般来说,您不应将可以通过内部联接访问的数据复制到另一个表中。每次获取业务时,您都使用内部联接从类别中获取描述。

标准化您的数据通常是为了防止数据过时并最大限度地减少您存储的数据量。

使用 linkto_category_id 允许您在每次需要时检索描述,而无需在每个业务行中存储一个大的相同文本字段。

【讨论】:

  • 是的,我明白这一点。我这样做是因为我正在从旧数据库中导出这些数据,并使用它来导入 WordPress 中的自定义帖子类型。
【解决方案2】:

正如布罗迪所说,这是需要的更新。

使用这里的最佳答案:How can I do an UPDATE statement with JOIN in SQL?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2020-11-19
    • 2011-10-25
    • 1970-01-01
    相关资源
    最近更新 更多