连接具有特定匹配情况的列

时间:2019-07-08 08:20:01

标签: mysql sql

我有两个表TableATableB
TableA的列名为Code

'A'
'AB'
'B'
'BB'

TableB中,我有一个名为pnrcode的列,如

'A001'
'AB001'
'B001'
'BC001' 

两个表都没有关系。
我想将基于TableA代码的这两个表与TableB pnrcode结合起来,并匹配基于TableA的字符

4 个答案:

答案 0 :(得分:0)

如果您使用的是MySql 8. *,则可以在子查询中使用REGEXP_SUBSTR来联接两个表

SELECT a.*, b.prncode 
FROM TableA a
JOIN (SELECT *, REGEXP_SUBSTR(prncode, '^[A-Z]+') as code 
      FROM TableB) b ON a.code = b.code

答案 1 :(得分:0)

尝试以下带有联接的代码。您可以根据需要使用任何联接。

xAxis: [{
        ...,
        categories: ['Very High', 'High', 'Medium', 'Low']
    },
    {
        ...,
        categories: [1, 2, 3, 4]
    },
],
...,
series: [{
        ...,
        data: [
            [0, 5],
            [0, 7],
            [1, 9],
            [1, 11],
            [2, 12],
            [2, 14],
            [3, 17],
            [3, 18]
        ]
    },
    {
        ...,
        data: [1, 2, 3, 4]
    }
]

答案 2 :(得分:0)

您可以使用replace()code中删除pnrcode
如果剩下的是number > 0(MySql进行隐式转换),则加入该变量:

select *
from tablea a left join tableb b
on replace(b.pnrcode, a.code, '') > 0

我假设所有pnrcode的数字部分均不是0
请参见demo
结果:

| code | pnrcode |
| ---- | ------- |
| A    | A001    |
| AB   | AB001   |
| B    | B001    |
| BB   |         |

答案 3 :(得分:0)

,其中res为      (从表A a中选择dbo.AlphaOnly(a.Prccode)作为Prccode1 *)       SELECT * from res在b.Code = res.prccode1上加入Tableb b       去