测验:用 SQL 找答案
SELECT * FROM customers WHERE id NOT IN (SELECT customer_id FROM orders);返回 0。最可能的原因是什么?
- 子查询中存在 NULL,因此整个 NOT IN 变成“未知”。
- 事实上,所有客户都下了订单
- 由于没有索引,它悄悄超时了。
- 子查询结果为空
对于 LEFT JOIN 结果中没有匹配项的行,COUNT(t.id)和COUNT(*)返回什么?
- 两个合计都为 0
- 两个合计都是 1
- COUNT(t.id) 为 0,COUNT(*) 为 1
- COUNT(t.id) 为 1,COUNT(*) 为 0
我使用LEFT JOIN保留所有左表,但结果与INNER JOIN相同。原因是什么?
- 连接键上没有索引。
- LEFT JOIN 语法使用不正确
- 通过在 WHERE 子句中添加右表的列条件,可以消除所有 NULL 行。
- 实际上,数据中没有不匹配的行。
将CSV加载到sqlite中作为.import后,WHERE id = 1001返回0。请问是什么原因?
.import将所有值都作为TEXT,因此保存的字符串是'1001'。- id 列上没有索引
- CSV 标题行直接进入数据行。
- id实际上不存在
一共80张票,但是COUNT(closed_at)是60张,什么意思呢?
- 仅查看了 60 张门票
- 删除20个案例
- 20种情况下,close_at为NULL,即仍处于打开状态。
- close_at 包含 20 个无效值
在向客户报告汇总结果之前必须检查哪些内容?
- 该查询的执行时间
- 分母——总共有多少个案例,其中有多少个符合条件?
- 目标表中的总行数和大小
- 查询是否使用索引