我有 2 张桌子
客户表和费用表
客户有 3 个字段
帐单编号、公司、帐户编号
收费有 2
公司 , 帐号 #
我需要将第三列添加到 ChargesTable 中,并使用正确的账单 # 形成客户表,与公司和帐户 # 匹配。
有谁知道在mysql中执行此操作的有效方法?
这是一个伪创建语句,如果你执行它会显示一个基本的关系结构(我想你在追求什么)。
它展示了关系约束,但缺乏真正的设计或结构。
CREATE TABLE `Customers` (
`BillingNumber` INT UNSIGNED NOT NULL,
`AccountNumber` INT UNSIGNED NOT NULL,
`Company` VARCHAR(64) NULL)
ENGINE = InnoDB;
CREATE TABLE `Charges` (
`BillingNumber` INT UNSIGNED NOT NULL,
`AccountNumber` INT UNSIGNED NOT NULL,
`Company` VARCHAR(64) NULL,
INDEX `fk_table1_Customers_idx` (`BillingNumber` ASC),
INDEX `fk_table1_Customers1_idx` (`AccountNumber` ASC),
CONSTRAINT `fk_table1_Customers`
FOREIGN KEY (`BillingNumber`)
REFERENCES `Customers` (`BillingNumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_table1_Customers1`
FOREIGN KEY (`AccountNumber`)
REFERENCES `Customers` (`AccountNumber`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
在费用表中创建新字段后。您需要更新值:
update charges c
join customers cu on cu.Company=c.Company and
cu.Account=c.Account
set c.NewBilling=cu.Billing;
首先向第二个表添加一列(假设 INTEGER 列类型):
ALTER TABLE ChargesTable ADD COLUMN BillingNumber INTEGER NULL;
然后通过将所有 ChargesTable 记录与第一个表连接来更新它:
UPDATE ChargesTable CH
JOIN CustomersTable CU ON (
CH.CompanyNumber = CU.CompanyNumber
AND CH.AccountNumber = CU.AccountNumber)
SET CH.BillingNumber = CU.BillingNumber;