sql - 或者查询不返回结果,而单独的查询返回结果
问题描述
此 SQL 查询返回一些结果:
select
"titres".*
from
"titres"
inner join "titres_titulaires" as "titulaires_join" on "titulaires_join"."titre_etape_id" = "titres"."titulaires_titre_etape_id"
inner join "entreprises" as "titulaires" on "titulaires_join"."entreprise_id" = "titulaires"."id"
where
("titulaires"."nom" like '%sma%')
我希望这个查询至少返回相同的结果:
select
"titres".*
from
"titres"
inner join "titres_titulaires" as "titulaires_join" on "titulaires_join"."titre_etape_id" = "titres"."titulaires_titre_etape_id"
inner join "entreprises" as "titulaires" on "titulaires_join"."entreprise_id" = "titulaires"."id"
inner join "titres_amodiataires" as "amodiataires_join" on "amodiataires_join"."titre_etape_id" = "titres"."amodiataires_titre_etape_id"
inner join "entreprises" as "amodiataires" on "amodiataires_join"."entreprise_id" = "amodiataires"."id"
where
(
"titulaires"."nom" like '%sma%'
or "amodiataires"."nom" like '%sma%'
)
但它返回一个空数组。
我在这里做错了什么?
解决方案
最后 2 次连接使用左连接而不是内连接
select
"titres".*
from
"titres"
inner join "titres_titulaires" as "titulaires_join" on "titulaires_join"."titre_etape_id" = "titres"."titulaires_titre_etape_id"
inner join "entreprises" as "titulaires" on "titulaires_join"."entreprise_id" = "titulaires"."id"
left join "titres_amodiataires" as "amodiataires_join" on "amodiataires_join"."titre_etape_id" = "titres"."amodiataires_titre_etape_id"
left join "entreprises" as "amodiataires" on "amodiataires_join"."entreprise_id" = "amodiataires"."id"
where
(
"titulaires"."nom" like '%sma%'
or "amodiataires"."nom" like '%sma%'
)
推荐阅读
- web-services - 使用 Jetty 配置的 Restlet
- c - 清除c中的数组数据
- php - Wamp 服务器中的错误显示错误:路径中的 C:/wamp 或 PHP
- java - 从unix机器识别windows selenium节点中下载的文件
- xamarin - 取消勾选“使用共享运行时”会产生性能问题
- c++ - 警告:非标准布局类型“DerivedClass”的偏移量
- c# - C#创建带有数字和字符的字符串序列
- node.js - 使用 Azure Functions 和 Azure Cosmos DB 时出现问题,返回“停机维护”
- javascript - 检索更新的文件并删除服务工作者中的旧缓存
- html - 如何使元素高度相同