根据mysql中其他表中的匹配值更新列

Uma*_*Uma 7 mysql sql join match sql-update

我有两个表日历和客户表.日历表有一个"客户"列,其客户表"ID"为值.但遗憾的是,此日历客户字段值错误地填充了其他值.两个表都有这些公共字段Date,SeatingID和BusID.如何根据这些常见字段更新日历表客户字段?

以下是两个表的结构.

客户表 在此输入图像描述

日历表

在此输入图像描述

Mah*_*mal 7

你可以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.
Run Code Online (Sandbox Code Playgroud)

在该SET子句中,您可以设置要更新的列,也可以JOIN根据我使用的任何谓词设置两个表c1.SeatingID = c2.SeatingID AND c1.BusID = c2.BusID,但您可以选择适合您需要的列.

这是一个SQL Fiddle演示


Uma*_*Uma 1

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;
Run Code Online (Sandbox Code Playgroud)