2017-03-10 81 views
-1

如何從兩個表使用LIKE語句

匹配表

CREATE TABLE matching (
    ID INT, 
    Name varchar(20) 
); 

INSERT INTO matching(ID,name) VALUES (1,'Child'),(2,'GrandChild'),(3,'parent') 

得到匹配的記錄TreeMatching

CREATE TABLE Treematching (
    ID INT, 
    Name varchar(20) 
); 

INSERT INTO Treematching(ID,name) VALUES 
(1,'Child-Foster'), 
(2,'Child-Filly'), 
(3,'Child-Ricky'), 
(4,'GRandchild-Filmy'), 
(5,'GRandchild-Freaky'), 
(6,'GRandchild-Frim'), 
(7,'Frim'), 
(8,'None'), 
(9,'parent-John') 

如何獲得如何獲得唯一的匹配記錄來自樹匹配表的匹配記錄

輸出:

ID Name    TName 
1 Child   Child-Foster 
2 Child   Child-Filly 
3 Child   Child-Ricky 
4 GRandchild  GRandchild-Filmy 
5 GRandchild  GRandchild-Freaky 
6 GRandchild  GRandchild-Frim 
9 parent   parent-John 

如何使用像我一直在使用CONCAT試圖語句來得到相同的記錄。

+0

你到目前爲止試過了什麼? –

+0

在join和concat函數中使用like語句 – mohan111

+0

您使用的是MySQL還是MS SQL Server?他們的LIKE的不完全兼容... – jarlh

回答

1

如果你使用SQL Server,你可以嘗試類似的東西:

SELECT 
    t.ID, 
    m.Name, 
    t.Name 
FROM matching AS m 
INNER JOIN Treematching AS t 
ON t.Name LIKE '%'+m.Name+'%' 

如果您使用MySQL服務器,請嘗試以下操作:

SELECT 
    t.ID, 
    m.Name, 
    t.Name 
FROM matching AS m 
INNER JOIN Treematching AS t 
ON t.Name LIKE CONCAT('%',m.Name,'%') 

關於MySQL版本,請查看以下鏈接。

sqlfiddle

+0

簡單的事情我已經使複雜..謝謝回答 – mohan111

+0

@ mohan111不客氣! – Christos

0

您也許能夠做這樣的事情(未測試,我沒有一個SQL服務器實例):

SELECT M.Id, M.Name, T.Name 
    FROM matching AS M 
     INNER JOIN Treematching AS T 
      ON M.Name LIKE T.Name + '%'; 
0

嘗試下面的查詢,

SELECT TM.ID,M.Name,TM.Name 
FROM @matching AS M 
    INNER JOIN @Treematching AS TM ON TM.Name LIKE M.Name+'%' 
0
SELECT A.ID, 
    B.NAME, 
    A.NAME AS TNAME 
    FROM TREEMATCHING A 
    INNER JOIN MATCHING B ON A.NAME LIKE B.NAME+'%' 



    ID   NAME     TNAME 
----------- -------------------- -------------------- 
1   Child    Child-Foster 
2   Child    Child-Filly 
3   Child    Child-Ricky 
4   GrandChild   GRandchild-Filmy 
5   GrandChild   GRandchild-Freaky 
6   GrandChild   GRandchild-Frim 
9   parent    parent-John