基于在MySQL中其他表匹配的值更新列(Update column based on matchin

2019-08-01 00:54发布

我有两个表日历和客户表。 日历表具有带有客户表“ID”的值“客户”列中。 但不幸的是,这个日历客户字段的值被错误地填充了其他值。 两个表都有这些公共域日期,SeatingID和BusID。 如何更新基于这些共同领域的日历表客户领域?

下面是这两个表的结构。

客户表

日历表

Answer 1:

您可以UPDATECustomer的第二个表的字段Calendar从第一台CustomerJOIN荷兰国际集团的两个表所示:

UPDATE calendar c1
INNER JOIN Customer c2 ON c1.SeatingID = c2.SeatingID AND c1.BusID = c2.BusID
SET c1.Customer = c2.ID --or SET c1.Customer = c2.PassengerName or whatever you want.

SET子句中,你可以设置你要更新的列,你也可以JOIN基于任何谓词两个表,我用c1.SeatingID = c2.SeatingID AND c1.BusID = c2.BusID ,但你可以选择什么是适合您的需求。

下面是一个SQL小提琴演示



Answer 2:

试试这个代码:

UPDATE calendar cal, customer cust 
SET cal.Customer = cust.ID
where cal.SeatingID = cust.SeatingID 
and cal.BusID = cust.BusID
and cal.DATE = cust.DateOfTravel;

SQL小提琴 DEMO

这里是链接到更多的信息abaout update



Answer 3:

update calendar ca left join customer c 
on c.DateofTravel=ca.Date and c.SeatingID=ca.SeatingID and c.BusID=ca.BusID 
set 
ca.Customer=c.ID;


Answer 4:

使用此查询它会帮助你从另一个表列更新表列:

UPDATE tableName1 AS tb1
INNER JOIN tableName2 AS tb2 
ON (tb1.columnName= tb2.columnName) 
SET tb1.updatedColumn = tb2.updatedColumnValue
WHERE ADD HERE CONDITION IF REQUIRED


文章来源: Update column based on matching values in other table in mysql