我不能让这个起作用

CREATE TABLE `oc_tax_class` (
  `tax_class_id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` varchar(255) NOT NULL,
  `date_added` datetime NOT NULL,
  `date_modified` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure f或 table `oc_tax_rate`
--

CREATE TABLE `oc_tax_rate` (
  `tax_rate_id` int(11) NOT NULL,
  `geo_zone_id` int(11) NOT NULL DEFAULT 0,
  `name` varchar(255) NOT NULL,
  `rate` decimal(15,4) NOT NULL DEFAULT 0.0000,
  `type` char(1) NOT NULL,
  `date_added` datetime NOT NULL,
  `date_modified` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure f或 table `oc_tax_rule`
--

CREATE TABLE `oc_tax_rule` (
  `tax_rule_id` int(11) NOT NULL,
  `tax_class_id` int(11) NOT NULL,
  `tax_rate_id` int(11) NOT NULL,
  `based` varchar(10) NOT NULL,
  `pri或ity` int(5) NOT NULL DEFAULT 1
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

3张桌子.我想要oc_tax_class.title = oc_tax_rate.name美元 我相信,尽管我不确定,我应该

INSERT INTO oc_tax_class(title)

UPDATE oc_tax_class SET title = ...

SELECT oc_tax_rate.name, oc_tax_rule.tax_class_id
JOIN oc_tax_rule ON oc_tax_rate.tax_rate_id = oc_tax_rule.tax_rate_id 

然后我不知道下一步该做什么. 我需要通过一个连接表将值从一个列复制到另一个表.

推荐答案

MySQL支持多表UPDATE语法,但是文档(https://dev.mysql.com/doc/refman/en/update.html)中关于它的例子非常少.

在您的情况下,这可能会奏效:

UPDATE oc_tax_class 
JOIN oc_tax_rule USING (tax_class_id)
JOIN oc_tax_rate USING (tax_rate_id)
SET oc_tax_class.title = oc_tax_rate.name;

我没有测试过这个.我建议您首先在您的数据样本上测试它,以确保它以您希望的方式工作.

Mysql相关问答推荐

带负数的MySQL子字符串_索引

如何在MySQL中检索两列的值不同的行

为什么歌曲详细信息未显示在 Liked.handlebars 视图中?

MySQL match against给出奇怪的结果

多列分组并进行求和

生成json数据并根据特定表的匹配条件进行过滤

在带有 D.I 的 .NET AWS Lambda 中使用 MySql.Data

如何在 SQL 中迭代所有名称和排名排列

如何在 MySQL Workbench 中设置 DateTime 列的默认值?

SQL: Select TEXT 字段的子字符串比整个值快

sequelize 中最好的更新方法是什么

使用适配器设计模式和外观设计模式实现

通过 Gorm 查询模型

SUBSTRING_INDEX 获取第 n 个值

动态创建内联 SQL 表(用于排除左连接)

MySQL PHP - Select WHERE id = array()?

MySQL触发器在某些条件下防止INSERT

在 MySQL 中删除数据库返回删除数据库错误:66

MySQL - 重复表

MySQL中的多列外键?