跨两数据集关联查询编写需求(附对应表结构样例)
双表关联查询实现
首先按常规数据库命名规范定义两张表名,所有字段、原始数据完全保留需求给出的规则不做改动:
- 存储库存数量的表命名为
inventory,包含id、quantity两个字段 - 存储产品名称的表命名为
products,包含id、product_name两个字段
两张表的原始样例数据:inventory表:
| id | quantity |
|---|---|
| A | 100 |
| A | 100 |
| B | 100 |
| A | 200 |
| C | 400 |
products表:
| id | product_name |
|---|---|
| A | almond |
| B | broccoli |
| D | durian |
| F | fries |
可直接使用的跨表查询语句
以下所有语句均同时读取两张表的字段,符合跨表查询要求:
1. 匹配产品名的库存明细查询(内连接)
仅返回两张表中id能完全匹配的记录,过滤掉无对应产品名/无对应库存的id:
SELECT i.id, p.product_name, i.quantity FROM inventory i INNER JOIN products p ON i.id = p.id;
2. 按产品维度汇总总库存
在内连接基础上做聚合计算,统计每个有效产品的总库存:
SELECT i.id, p.product_name, SUM(i.quantity) AS total_stock FROM inventory i INNER JOIN products p ON i.id = p.id GROUP BY i.id, p.product_name;
3. 全库存匹配查询(左连接)
保留库存表全部记录,即使对应id在产品表中不存在也会返回,匹配不到产品名的字段值显示为NULL:
SELECT i.id, p.product_name, i.quantity FROM inventory i LEFT JOIN products p ON i.id = p.id;
以上语句均未修改原有字段定义、数据逻辑,关联键统一使用两表共有的
id字段,符合SQL编写规范。
内容的提问来源于stack exchange,提问作者codesxd
相关产品推荐
相关产品推荐

