当前位置: 首页 > 知识库问答 >
问题:

左连接返回空值后的内连接

艾善
2023-03-14

我想返回每个p行,并为u.idu.first_name提供空值,如果它们没有ROLE_ADMIN。当我执行此查询时,我得到空结果。如果我使用左连接而不是,我得到不正确的结果。如何过滤左连接,以便如果没有匹配,我仍然得到返回的p行与u.idu.first_name的空值?

注:我在末尾添加了p.id=13455,仅用于测试目的。

select u.id, u.first_name, p.id
from sub p
    left join oub oj on oj.id = p.sub_id
    left join jhi_user u on u.oub_id= oj.id 
    inner join jhi_user_authority ua on ua.user_id = u.id where ua.authority_name = 'ROLE_ADMIN' and p.id = 13544;

共有3个答案

谷梁存
2023-03-14

所以我这样解决了:

select u.id, u.first_name, p.id
from sub p
    left join oub oj on oj.id = p.sub_id
    left join jhi_user u on u.id =
    (select ru.id from jhi_user ru inner join jhi_user_authority rua on rua.user_id = ru.id and rua.authority_name = 'ROLE_ADMIN' where ru.oub_id= oj.id)
    where p.id = 18774;
易弘阔
2023-03-14

我认为你想要的逻辑是:

select 
    ua.user_id,
    case when ua.user_id is not null then u.first_name end as first_name,
    p.id
from sub p
left join oub oj 
    on oj.id = p.sub_id
left join jhi_user u 
    on u.oub_id= oj.id 
left join jhi_user_authority ua 
    on ua.user_id = u.id
    and ua. authority_name = 'ROLE_ADMIN'
    and u.id is not null
裴曜灿
2023-03-14

像下面一样使用左连接

select u.id, u.first_name, p.id
from sub p
    left join oub oj on oj.id = p.sub_id
    left join jhi_user u on u.oub_id= oj.id 
    left join 
   ( select * from
jhi_user_authority where authority_name = 'ROLE_ADMIN' 
)  ua on ua.user_id = u.id
  where p.id = 13544;
 类似资料:
  • 我想要两个表上的连接,如果值为NULL,则复制左连接行为,如果值为NOULL,则复制内连接行为。例如,对于表: 该联接将返回一行值(根据左联接)。对于表格: 不会返回任何行(根据内部联接)。对于表格: 将返回值为的单行(根据两种联接类型)。 最有效的方法是什么? 编辑:作为效率最大化的一部分,我正在寻找一个不进行后期筛选的查询(即使用子句)。

  • 内连接,显示两个表中有联系的所有数据; 左链接,以左表为参照,显示所有数据,右表中没有则以null显示 右链接,以右表为参照显示数据,,左表中没有则以null显示

  • 本文向大家介绍MySQL 的内连接、左连接、右连接有什么区别?相关面试题,主要包含被问及MySQL 的内连接、左连接、右连接有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 内连接关键字:inner join;左连接:left join;右连接:right join。 内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反。

  • 本文向大家介绍简单谈谈mysql左连接内连接,包括了简单谈谈mysql左连接内连接的使用技巧和注意事项,需要的朋友参考一下 前言 最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写 业务: sql语句统计出入库数据。 问题: 只统计了X端入库单。 原因: 没有发现X端的数据库中只有入库单是有a字段数据而出库单是没有的,并使用了a字段去inner

  • 几天来,我一直在为一个命名查询苦苦挣扎。命名查询具有与第二个表的内部联接。另一个复杂性是,第二个表上的主键是复合键。我在这里简化了两张表: 主键是nameIdx 复合主键位于nameIdx和nameType上 我试图在JPQL中模拟以下sql查询: 此查询在Oracle中按预期工作,返回许多记录。Java我有这些JPA实体: 和 还有一个主键类ANameRolePK 使用此设置,包括在上面的ANa

  • 问题内容: 我知道在这里和互联网上已经创建了有关该主题的许多主题。但是,我真的无法就两个语句之间的区别得出最终的结论!我的意思是,尝试并尝试可以通过查询获得所需的所有结果,但是我真的无法完全控制刀具! 我正在考虑自己是一个非常优秀的程序员和一个非常出色的SQL-ista,对此我感到有些as愧… 这是一个例子: 我有一个包含网站页面的表格(“ web_page”) 具有类别(“类别”)的表格。 一个