我在两个不同的数据库中有两个表。
Kalix2
- >我有一个表ph_Companies
Asterisk
- >我在这里有一个名为cdr
的表。在ph_Companies中我有CompanyName列,公司名称是这种格式。
CompanyName
AccuWebHosting
在其他表中,我有另一个列clid,它以下列格式存储公司名称。
clid
"AccuWebHosting-EN" <6618083563>
现在,我的问题是如何根据此列在这两个表之间建立联接。在这两个表中,这些是唯一具有一些共同数据的列。没有其他专栏有类似的数据。
请帮帮我。提前谢谢。
答案 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 比上面的查询更好。