Mysql加入两个表

时间:2013-01-18 14:47:19

标签: mysql sql join

我在两个不同的数据库中有两个表。

  1. Kalix2 - >我有一个表ph_Companies
  2. Asterisk - >我在这里有一个名为cdr的表。
  3. 在ph_Companies中我有CompanyName列,公司名称是这种格式。

       CompanyName
      AccuWebHosting
    

    在其他表中,我有另一个列clid,它以下列格式存储公司名称。

        clid
       "AccuWebHosting-EN" <6618083563> 
    

    现在,我的问题是如何根据此列在这两个表之间建立联接。在这两个表中,这些是唯一具有一些共同数据的列。没有其他专栏有类似的数据。

    请帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

SELECT  a.*, b.*
FROM    ph_Companies a
        INNER JOIN otherTable b
            ON b.clid LIKE CONCAT('%', a.CompanyName, '%')

注意,如果您需要大型数据库,则此查询非常慢,因为它需要FullTable Scan。原因是你有“糟糕”的架构设计。我建议你改变这样的表,

CREATE TABLE ph_Companies
(
    ID INT PRIMARY KEY,
    CompanyName VARCHAR(20),
    -- OTHER COLUMNS HERE
);

CREATE TABLE otherTable 
(
    ID INT AUTO_INCREMENT PRIMARY KEY,
    CompanyID INT,
    CompanyName VARCHAR(20),
    clid VARCHAR(50),
    -- OTHER COLUMNS HERE
    CONSTRAINT tb_fk FOREIGN KEY (CompanyID)
        REFERENCES ph_Companies (ID)
);

你会有这样的查询,

SELECT  a.*, b.*
FROM    ph_Companies a
        INNER JOIN otherTable b
            ON a.ID = b.CompanyID

FAR 比上面的查询更好。