Mysql 如何使用LIKE语句仅获取匹配记录
如何从两个表中获取匹配的记录 匹配表Mysql 如何使用LIKE语句仅获取匹配记录,mysql,sql,sql-server,Mysql,Sql,Sql Server,如何从两个表中获取匹配的记录 匹配表 CREATE TABLE matching ( ID INT, Name varchar(20) ); INSERT INTO matching(ID,name) VALUES (1,'Child'),(2,'GrandChild'),(3,'parent') 树木匹配 CREATE TABLE Treematching ( ID INT, Name varchar(20) ); INSERT INTO Treematching(ID,
CREATE TABLE matching (
ID INT,
Name varchar(20)
);
INSERT INTO matching(ID,name) VALUES (1,'Child'),(2,'GrandChild'),(3,'parent')
树木匹配
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
如何使用like语句获取相同的记录我已尝试使用CONCAT。您可能可以执行类似的操作(未测试,我没有sql server实例): 尝试下面的查询
SELECT TM.ID,M.Name,TM.Name
FROM @matching AS M
INNER JOIN @Treematching AS TM ON TM.Name LIKE M.Name+'%'
如果使用SQL Server,可以尝试以下操作:
SELECT
t.ID,
m.Name,
t.Name
FROM matching AS m
INNER JOIN Treematching AS t
ON t.Name LIKE '%'+m.Name+'%'
SELECT
t.ID,
m.Name,
t.Name
FROM matching AS m
INNER JOIN Treematching AS t
ON t.Name LIKE CONCAT('%',m.Name,'%')
如果您使用MySQL服务器,请尝试以下操作:
SELECT
t.ID,
m.Name,
t.Name
FROM matching AS m
INNER JOIN Treematching AS t
ON t.Name LIKE '%'+m.Name+'%'
SELECT
t.ID,
m.Name,
t.Name
FROM matching AS m
INNER JOIN Treematching AS t
ON t.Name LIKE CONCAT('%',m.Name,'%')
关于MySQL版本,请看下面的链接
到目前为止您尝试了什么?在join和concat函数中使用like语句您使用的是MySQL还是MS SQL Server?他们的同类不完全兼容…我把简单的事情弄得很复杂。。谢谢你的回答