表格如下:
Tb_RefCity (两列都是 varchar)
RealCity | RefCity
------------------------
London 00 Perfor-Lon
Amsterdam Ort Amster
Tb_RawData (两列都是 varchar)
Counter | FakeCity
------------------------
222234 | 00 Perfor-Lon (2342)
342344 | 00 Perfor-Lon(23L)
534534 | 00 Perfor-Lon (342211
234444 | Ort Amster(761)
234234 | Ort Amster L1)
我想将 Tb_RawData 与 Tb_RefCity
进行内部联接,以将 RealCity
插入到 City
列中,并将计数器值插入到 Tb_FinalTable
结果应如下所示(示例)
Tb_FinalTable (计数器 = int/城市 = varchar)
Counter | City
-----------------------
222234 | London
342344 | London
534534 | London
234444 | Amsterdam
234234 | Amsterdam
我当前的查询:
INSERT INTO Tb_FinalTable
SELECT Raw.Counter, Ref.RealCity
FROM Tb_RawData As Raw
INNER JOIN Tb_RefCity As Ref ON Raw.FakeCity = Ref.RefCity
问题:
问题出在 Tb_RawData
FakeCity
中可能有不同的结束字符串,但是对于特定城市,起点始终相同,例如:
00 Perfor-Lon
Ort Amster
我希望我的查询独立于 FakeCity
和内部连接中的结束字符串,以检查与 Ref 表进行比较的起始字符串以获得真实的城市。希望你明白我的意思。
最佳答案
http://sqlfiddle.com/#!9/cae0da/1
INSERT INTO Tb_FinalTable
SELECT Raw.Counter, Ref.RealCity
FROM Tb_RawData As Raw
INNER JOIN Tb_RefCity As Ref
ON Raw.FakeCity LIKE CONCAT(Ref.RefCity,"%");
关于mysql - 基于特定条件的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48271100/