如何根据部分匹配加入MySql?

Shy*_*thy 2 mysql sql

我有两张桌子.

表A.

Column 1     Column 2
CT 3C        10.5 -23.12
OT 5A        11.2 -24.5
Run Code Online (Sandbox Code Playgroud)

表B.

Column 1     Column 2
PRIM         12.3 -24.51, 10.5 -23.12, 61.24 -78.23
SEC          8.7345 -46.1934, 10.49 -49.1834
TERT         18.98 -28.12, 11.23 -24.78, 1.45 -24.11, 11.2 -24.5
Run Code Online (Sandbox Code Playgroud)

加入后的结果表:

Column 1      Column 2      Column 3     Column 4
CT 3C         10.5 -23.12   PRIM         12.3 -24.51, 10.5 -23.12, 61.24 -78.23
OT 5A         11.2 -24.5    TERT         18.98 -28.12, 11.23 -24.78, 1.45 -24.11, 11.2 -24.5
Run Code Online (Sandbox Code Playgroud)

有没有办法在不将表B中的"第2列"的内容拆分成单独的列的情况下进行此匹配?"表B的第2列"中的内容由","分隔.

10.5 -23.12应与12.3 -24.51,10.5 -23.12,61.24 -78.23相匹配,因为它包含在其中的值列表中.

我不能将它们拆分成单独的列,因为在某些情况下,它中有多达300个不同的值,以','分隔

OMG*_*ies 7

短期解决方案

使用FIND_IN_SET函数:

SELECT a.column1, a.column2,
       b.column1, b.column2
  FROM TABLE_A a
  JOIN TABLE_B b ON FIND_IN_SET(a.column2, b.column2) > 0
Run Code Online (Sandbox Code Playgroud)

长期解决方案

非规范化数据只有在确定必要之后才能存储为性能改进- 而不是之前.

在TABLE_A和TABLE_B之间需要一个多对多表来保存逗号分隔列表中表示的关系.