mysql - 基于特定条件的内连接

标签 mysql sql

表格如下:

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/

相关文章:

mysql - 混合两个sql查询: return what's requested in the first one but ignoring the second one

mysql - 在ansible中连接变量

mysql - 在 char 数据类型的字段中插入中文和日文字符

php - PDO 中 mysqli_fetch_array 函数的确切等价物是什么?

SQL Server审计同表数据

Mysql子查询别名

php - 根据另一个表更新 mysql 表。复杂查询

Mysql - 存储有关表中项目是/否重复详细信息的最佳方法

mysql - 查询多对多链接表

mysql - 计算后将数据从一个表插入到另一个表的过程