MySQL查询比较2个表中的数据并更新其他表中的数据

时间:2017-05-01 07:55:56

标签: mysql

我已经搜索并尝试了所有应用我发现但没有运气的事情。

我有2个表我需要比较每个中的2个字段并在1中更新字段。

表1

 ID     Year    Name

4015    2016    Acura
4016    2016    Alfa+Romeo
4017    2016    Aston+Martin
4018    2016    Audi
4019    2016    Bentley
4020    2016    BMW
4021    2016    Buick
4022    2016    Cadillac
4023    2016    Chevrolet
4024    2016    Chrysler
4025    2016    Daewoo
4026    2016    Daihatsu
4027    2016    Dodge
4028    2016    Eagle
4029    2016    Ferrari
4030    2016    Fiat
4031    2016    Fisker
4032    2016    Ford
4033    2016    Geo
4034    2016    GMC
4035    2016    Honda
4036    2016    HUMMER
4037    2016    Hyundai
4038    2016    INFINITI
4039    2016    Isuzu
4040    2016    Jaguar
4041    2016    Jeep
4042    2016    Kia
4043    2016    Lamborghini
4044    2016    Land+Rover
4045    2016    Lexus
4046    2016    Lincoln
4047    2016    Lotus
4048    2016    Maserati
4049    2016    Maybach
4050    2016    Mazda
4051    2016    McLaren
4052    2016    Mercedes-Benz
4053    2016    Mercury
4054    2016    MINI
4055    2016    Mitsubishi
4056    2016    Nissan
4057    2016    Oldsmobile
4058    2016    Panoz
4059    2016    Plymouth
4060    2016    Pontiac
4061    2016    Porsche
4062    2016    Ram
4063    2016    Rolls-Royce
4064    2016    Saab
4065    2016    Saturn
4066    2016    Scion
4067    2016    smart
4068    2016    SRT
4069    2016    Subaru
4070    2016    Suzuki
4071    2016    Tesla
4072    2016    Toyota
4073    2016    Volkswagen
4074    2016    Volvo

我需要更新"类别"表2中的字段与表1中的ID# Table1.Year和Table1.Name与Table2.Year和Table2.Make。

匹配的记录

示例:表2"类别"对于ID#49224,应该是表1中的ID#4030。

表2

 ID   Category  Year    Make         

49206   0       2016    Acura        
49207   0       2016    Audi         
49208   0       2016    Audi         
49209   0       2016    Audi         
49210   0       2016    Audi         
49211   0       2016    Ford         
49212   0       2016    Honda        
49213   0       2016    Jaguar       
49214   0       2016    Jaguar       
49215   0       2016    Jaguar       
49216   0       2016    Kia      
49217   0       2016    Kia  
49218   0       2016    Kia  
49219   0       2016    Kia  
49220   0       2016    Mazda        
49221   0       2016    Mazda        
49222   0       2016    Mazda        
49223   0       2016    Mercedes-Benz
49224   0       2016    Fiat

非常感谢任何帮助。谢谢

2 个答案:

答案 0 :(得分:1)

此查询将匹配每个类别,它将更新表。如果发生集合(MakeYear)不存在category将为NULL

UPDATE Table2 t2
   SET category = (SELECT id FROM Table1 t1
                   WHERE t2.Make = t1.Name
                     AND t2.Year = t1.Year)

答案 1 :(得分:0)

create table3 as 
select 
a.year, 
a.make, 
a.id, 
b.id as category 
from table2 a 
inner join 
table1 b 
on 
a.year=b.year 
and 
a.make=b.make

应该这样做吗?