根据列的子字符串的外键加入两个表?

时间:2018-01-21 21:22:32

标签: mysql sql database

我有以下两个表

顺序

ID|      DETAILS       | AMOUNT
-------------------------------
0 |#Battery#Client1234 | 90USD

客户端

ID   |  NAME
--------------
1234 | JohnDoe

我如何加入这两个表,因为Order表中的外键与其他一些信息聚合在一起?

4 个答案:

答案 0 :(得分:2)

将您的专栏DETAILS分成两个OrderDerailsCLientID,并将ClientID与第二个表联系起来。

答案 1 :(得分:1)

http://sqlfiddle.com/#!9/a8c9f6/1

SELECT o.*, c.*
FROM `order` o
LEFT JOIN client c
ON o.details LIKE CONCAT('%#Client',c.id)

答案 2 :(得分:0)

尝试:

SELECT * 
FROM Orders oo
JOIN Client cc
ON oo.details LIKE CONCAT('%', cc.id, '%');

答案 3 :(得分:0)

您可以使用MySQL SUBSTRING_INDEX() function从订单详细信息中提取客户端ID,并使用它来与客户端表进行连接。这是查询:

SELECT *
FROM `order` o
LEFT JOIN client c
ON c.id=SUBSTRING_INDEX(o.details,'#Client',-1);

<强> SQL FIDDLE DEMO