微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在一个完整的外部关节之后是否有一个 where 或 group by 来显示负数?

如何解决在一个完整的外部关节之后是否有一个 where 或 group by 来显示负数?

我正在尝试查询一个数据库 sql oracle,它结合了 2 个表数据,但显示了没有任何订单的位置。

我已经创建了一个 location_t 和来自主要公司的 Mile 的相关网格。我已经为网格提供了一个映射到客户表的位置 ID。

我需要编写一个查询显示没有客户订单的网格。

我已经用一个完整的外连接开始了查询

选择customer.location_id,location-t.grid_location 来自客户 全外连接 location_t 在 customer.location_Id = location_t.location_Id

这行得通,但当然所有结果都带有 - 对于未使用的 ID。

是否有一个 where 子句只会在没有客户订购的情况下显示空 ID。

也欢迎提供更好的方法示例。谢谢

解决方法

将网格左连接到客户,然后要求只返回客户为空的行:

SELECT
    *
FROM
  location_t l
  left outer join customer c on c.location_Id = l.location_Id
WHERE
  c.location_id IS NULL

当您执行 WHERE 操作时,将连接列指定为空值,或者您知道永远不会自然包含空值的另一列(例如,如果某些客户自然没有中间名并因此具有空值,则不要使用客户的中间名)在该列中作为自然数据的一部分)

,

我需要编写一个查询来显示没有客户订单的网格。

假设您确实想要没有客户的位置,那么我会想到 not exists

select l.*
from location_t l
where not exists (select 1
                  from customer 
                  where c.location_Id = l.location_Id
                 );

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。