MySQL Query问题匹配新行

时间:2013-09-12 23:03:47

标签: mysql insert

我有2张桌子

CustomersTable和 ChargesTable

客户有3个字段

结算#,公司,帐号#

费用有2

公司,帐号#

我需要向ChargesTable添加第3列,其中包含与客户表相匹配的正确结算#,与公司和帐户#匹配。

任何人都知道在mysql中执行此操作的有效方法吗?

3 个答案:

答案 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;

http://sqlfiddle.com/#!2/f2449/4

答案 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;