我有2张桌子
CustomersTable和 ChargesTable
客户有3个字段
结算#,公司,帐号#
费用有2
公司,帐号#
我需要向ChargesTable添加第3列,其中包含与客户表相匹配的正确结算#,与公司和帐户#匹配。
任何人都知道在mysql中执行此操作的有效方法吗?
答案 0 :(得分:0)
这是一个伪创建语句,如果你执行它将显示一个基本的关系结构(我想你正在追求的)。
它展示了关系约束,但缺乏真正的设计或结构。
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;
答案 1 :(得分:0)
在表费用中创建新字段后。 您需要更新值:
update charges c
join customers cu on cu.Company=c.Company and
cu.Account=c.Account
set c.NewBilling=cu.Billing;
答案 2 :(得分:0)
首先在第二个表中添加一个列(假设为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;