Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不返回行的复杂Mysql字符串_Mysql_Sql - Fatal编程技术网

不返回行的复杂Mysql字符串

不返回行的复杂Mysql字符串,mysql,sql,Mysql,Sql,我在“服务”表中有3行: -1是不存在的Obr,服务2不包含任何Obr或已被删除 如果我使用select*fromservices提取,它将按预期工作,但如果我执行搜索sql: select *, (select Name from Obrs where ID=ObrID) as ObrName from Services where (select Name from Obrs where ID=ObrID) like '%SEARCH_STRING%' 它

我在“服务”表中有3行:

-1是不存在的Obr,服务2不包含任何Obr或已被删除

如果我使用
select*fromservices
提取,它将按预期工作,但如果我执行搜索sql:

select 
    *,
    (select Name from Obrs where ID=ObrID) as ObrName
from
    Services
where
    (select Name from Obrs where ID=ObrID) like '%SEARCH_STRING%'
它不返回最后一行。有没有办法让它返回类似于:

ID | name | ObrID | ObrName
 0 |   A  |   1   |   ObrA
 1 |   B  |   2   |   ObrB
 3 |   C  |   -1  |   NULL

如果因为您的
ObrID
-1
而没有
Obrs.Name
,则
Obrs.Name
将是
NULL
,因此不像“%$SEARCH\u STRING%”那样
。您可以添加一个附加条件,以包括以下情况:

where 
    (select Name from Obrs where ID=ObrID) like '%$SEARCH_STRING%'
    OR ObrID = -1
并遵循的建议,使用
左连接
。连接始终是首选方法,尤其是与相关子查询相比。使用
左连接时的工作条件为

WHERE 
    Obrs.Name LIKE '%$SEARCH_STRING%'
    OR Obrs.Name IS NULL

您想使用左联接

或:

下面可能会有帮助:

select s.*,ob.Name from Services as s left join Obrs as ob on s.ID=ob.ObrID where  ob.Name like '%$SEARCH_STRING%';
SELECT s.*,o.ObrName from Services s
    LEFT JOIN Obrs o ON ID=ObrID
    WHERE OrbName LIKE '%$SEARCH_STRING%' OR OrbName IS NULL
SELECT * FROM (select s.*,o.ObrName from Services s
    LEFT JOIN Obrs o ON ID=ObrID) tmp
    WHERE OrbName LIKE '%$SEARCH_STRING%' OR OrbName IS NULL
select s.*,ob.Name from Services as s left join Obrs as ob on s.ID=ob.ObrID where  ob.Name like '%$SEARCH_STRING%';