qwe*_*rty 16 mysql sql subquery where-clause sql-like
你会如何使用'LIKE'来搜索子查询?
我试过这样做,但不起作用:
SELECT *
FROM mytable
WHERE name
LIKE '%
(SELECT name FROM myothertable)
%'
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这个:
SELECT * FROM t1
WHERE t1.name IN (SELECT t2.name FROM t2)
AND (t1.title IN (SELECT t2.title FROM t2)
OR t1.surname IN (SELECT t2.surname FROM t2))
Run Code Online (Sandbox Code Playgroud)
它工作正常,因为它返回完全匹配,但它似乎没有返回我的其他相似的记录,所以我也想检查:
t1.title LIKE'%t2.title%'和t1.surname LIKE' %t2.surname%'
我该怎么做?
OMG*_*ies 22
使用JOIN:
SELECT a.*
FROM mytable a
JOIN myothertable b ON a.name LIKE CONCAT('%', b.name, '%')
Run Code Online (Sandbox Code Playgroud)
...但如果myothertable
给定mytable
记录中有多个匹配,则可能存在重复.
使用EXISTS:
SELECT a.*
FROM mytable a
WHERE EXISTS (SELECT NULL
FROM myothertable b
WHERE a.name LIKE CONCAT('%', b.name, '%'))
Run Code Online (Sandbox Code Playgroud)
使用全文搜索MATCH
(需要myothertable
是MyISAM)
SELECT a.*
FROM mytable a
JOIN myothertable b ON MATCH(a.name) AGAINST (b.name)
Run Code Online (Sandbox Code Playgroud)
ber*_*nie 11
例如:
SELECT a_column
FROM mytable t
WHERE EXISTS (
SELECT 1
FROM myothertable ot
WHERE t.`name` LIKE '%' || ot.`name` || '%');
Run Code Online (Sandbox Code Playgroud)
就术语而言:这被称为相关子查询.