如何解决在一个完整的外部关节之后是否有一个 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 举报,一经查实,本站将立刻删除。