当前位置: 首页 > news >正文

SQL-leetcode-183. 从不订购的客户

183. 从不订购的客户

Customers 表:

±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
±------------±--------+
在 SQL 中,id 是该表的主键。
该表的每一行都表示客户的 ID 和名称。
Orders 表:

±------------±-----+
| Column Name | Type |
±------------±-----+
| id | int |
| customerId | int |
±------------±-----+
在 SQL 中,id 是该表的主键。
customerId 是 Customers 表中 ID 的外键( Pandas 中的连接键)。
该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。

找出所有从不点任何东西的顾客。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Customers table:
±—±------+
| id | name |
±—±------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
±—±------+
Orders table:
±—±-----------+
| id | customerId |
±—±-----------+
| 1 | 3 |
| 2 | 1 |
±—±-----------+
输出:
±----------+
| Customers |
±----------+
| Henry |
| Max |
±----------+

题解

  • 该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。
    啥子含义?就是明细表呗,主键唯一,客户唯一,订单唯一,客户与订单是1对n的关系,也就是说订单是最完整的数据,客户可能没有订单,但有了订单已经能找到对应的客户。
  • 找出所有从不点任何东西的顾客。
    从来不点任何东西,啥子含义?说白了就是在订单明细表中不存在任何一条记录的客户。
    那这样是不是就分析清晰了?怎么判断这个表里的数据有没有在另外一个表里呢? join拉齐? union很显然不合适
    还要判断不在某一个表中的数据呢?外连接比较合适,关联不上会置空嘛
    于是乎方法一诞生

方法一 外连接+where

select c1.name as customers
from customers c1 left join orders o1 on c1.id=o1.customerId
where o1.id is null

方法二 子查询

什么思路呢?先找到点单的有哪些,再逆向思维取反,搞定

select name as customers
from customers 
where id not in(select distinct customerId from orders)

方法三 不用in还有什么吗?not exists

思路同上,找到另外一张表不存在的记录,但exists 会比子查询性能更佳
not exists (select distinct customerId from orders o where c.id=o.customerId)
这是整体,exists 返回值是 true或者false,可能会有人看不懂,简单解释下

select name as customers
from customers c
where not exists (select distinct customerId from orders o where c.id=o.customerId)

这里贴个图就不多bb拉
在这里插入图片描述

方法四 暂时没想到,等想到了再说,够用就行

http://www.lryc.cn/news/513181.html

相关文章:

  • 苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序
  • 《代码随想录》Day21打卡!
  • Dell服务器升级ubuntu 22.04失败解决
  • 构建全志 T113 Tina SDK
  • (推荐)【通用业务分发架构】1.业务分发 2.rpc调用 3.Event事件系统
  • 最近的一些事情
  • CP AUTOSAR标准之FlexRayDriver(AUTOSAR_SWS_FlexRayDriver)(更新中……)
  • Cesium 实战 27 - 三维视频融合(视频投影)
  • GraphRAG实践:docker部署neo4j
  • 常用的数据库类型都有哪些
  • swiftui开发页面加载发送请求初始化@State变量
  • Ribbon和Eureka的集成
  • 关于UE加载osgb数据的研究(一)
  • 探索数据之美,Plotly引领可视化新风尚
  • List排序的方法
  • BurstAttention:高效的分布式注意力计算框架
  • 大数据治理:构建稳健的数据生态系统
  • 【图书介绍】几本适合当教材的大数据技术图书
  • 阴阳师の新手如何速刷5个SP/SSR?!(急速育成)
  • unity学习4:git和SVN的使用差别
  • 四大自平衡树对比:AVL树、红黑树、B树与B+树
  • BUUCTF Pwn ciscn_2019_es_2 WP
  • MongoDb-mongosh-登录
  • C语言day3:shell脚本
  • 微信小程序Uniapp
  • mongoTemplate的复杂组装条件查询
  • httpslocalhostindex 配置的nginx,一刷新就报404了
  • pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除
  • IO Virtualization with Virtio.part 1 [十二]
  • ShardingSphere-Proxy分表场景:go测试案例