MYSql左边连接两个表,列有不同的值

时间:2018-03-14 06:21:21

标签: php mysql

我有两张桌子 1:tbl_member_registration与主键(mem_id)
2:带外键的tbl_phone(parent_code)

我想离开加入这两个表但是tbl_phone parent_code列有不同的值,以前缀 mem _ 开头,如何加入这两个表?

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以尝试以下加入:

SELECT *
FROM tbl_member_registration t1
LEFT JOIN tbl_phone t2
    ON t1.mem_id = CAST(SUBSTRING_INDEX(t2.parent_code, '_', -1) AS SIGNED);

Demo

接下来,您可能希望清理表,以便可以使用相等=来连接条件。在对parent_code进行丑陋的调用时,SUBSTRING_INDEX列上无法使用索引。

答案 1 :(得分:1)

我还没有检查过,但您可以尝试这样做。

select *
from tbl_member_registration tmr join tbl_phone tp
on tp.parent_code = concat('mem_',tmr.mem_id)

更多参考详情:CONCAT

答案 2 :(得分:0)

我希望这会对你有所帮助..

SELECT *
    FROM tbl_member_registration t1
    INNER JOIN tbl_phone t2
        ON t1.mem_id = SUBSTR(t2.parent_code,5, 2);

http://rextester.com/CSBZ60078

答案 3 :(得分:0)

select tbl_phone.*, tbl_member_registration.*
from tbl_member_registration.mem_id 
left join tbl_phone on tbl_member_registration.mem_id = (select substring(tbl_phone.parent_code, 5,2) );