mysql - 通过单个查询选择所有客户和所有订单
问题描述
有没有办法通过单个 mysql 查询来输出所有客户及其所有订单,包括没有订单的客户?我有:
顾客:
╔════╦═════════════╗
║ ID ║ NAME ║
╠════╬═════════════╣
║ 1 ║ John Smith ║
║ 2 ║ Jim Jimmers ║
╚════╩═════════════╝
订单:
╔═══════╦══════════╦═══════╗
║ id ║ ClientID ║ Status║
╠═══════╬══════════╬═══════╣
║ 1 ║ 1 ║ wait ║
║ 2 ║ 1 ║ rdy ║
╚═══════╩══════════╩═══════╝
如何选择如下结果:
╔════╦═════════════╦═════════════╦═════════════╗
║ ID ║ NAME ║ Order Id ║ Order Status║
╠════╬═════════════╬═════════════╬═════════════╣
║ 1 ║ John Smith ║ 1 ║ wait ║
║ 1 ║ John Smith ║ 2 ║ rdy ║
║ 2 ║ Jim Jimmers ║ ║ ║
╚════╩═════════════╩═════════════╩═════════════╝
解决方案
只需在两个表之间使用左连接:
SELECT c.ID, c.NAME, o.id AS OrderId, o.Status AS OrderStatus
FROM Customers c
LEFT JOIN Orders o
ON o.ClientID = c.ID
ORDER BY c.ID, o.id;
推荐阅读
- node.js - 用 Puppeteer 数年
- python - 如何使用 Prophet 绘图功能在 x 轴上显示小时数
- spreadsheetgear - 如何检测 SpreadsheetGear 中的缺失列
- python - 在 Windows 和 NEOS 服务器上的 Python 中使用 IPOPT 时出错
- json - 使用私有设置器反序列化 JSON
- node.js - 第一次尝试连接到 mongodb 时出错
- python - 如何创建包含特征选择和 KerasClassifier 的 sklearn 管道?GridSearchCV 期间 input_dim 更改的问题
- java - @Bean:子类中唯一的 bean 名称
- pandas - 创建具有 3 列的条形图和饼图
- java - 在 Java Server Pages 的上下文中这叫什么?