mysql - 从 MySQL 中分组和连接表的特定行中选择数据
问题描述
我有两个表,客户和订单是内部连接的。一个客户可以有多个与其关联的订单。在我的选择中,我然后按customers.id 分组。我需要选择每个客户最近的订单,以及在该订单上花费的金额。目前,我可以选择最近的order_date,但不知道如何选择与order_date在同一行的金额。
这是我当前的查询:
SELECT
first_name,
last_name,
email,
MAX(order_date) AS recent_order,
amount -- this needs to select amount associated with recent_order
FROM customers
JOIN orders
ON customers.id = orders.customer_id
GROUP BY customers.id;
该查询选择最近的日期,但不选择与最近的 order_date 关联的金额。
表声明:
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(100),
last_name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
order_date DATE,
amount DECIMAL(8,2),
customer_id INT,
FOREIGN KEY(customer_id) REFERENCES customers(id)
);
解决方案
SELECT
first_name,
last_name,
email,
MAX(order_date) AS recent_order,
(SELECT amount FROM orders WHERE order_date = MAX(order_date) AND customers.id = orders.customer_id) as amount
FROM customers
JOIN orders
ON customers.id = orders.customer_id
GROUP BY customers.id;
或者
SELECT
first_name,
last_name,
email,
order_date AS recent_order,
amount AS recent_order_amount
FROM customers
JOIN orders
ON customers.id = orders.customer_id
GROUP BY customers.id
ORDER BY orders.order_date DESC;
推荐阅读
- autokey - 用于自动键 linux 的 AutoClicker
- php - PHP Array Loop - 试图在数组中获取数组
- javascript - Slick.js 在移动设备上显示滚动条
- emacs - 关闭当前窗口时跳转到上一个窗口
- r - 不确定如何修复“数值表达式有 41 个元素:仅第一次使用”警告
- kubernetes - kubernetes:带有节点端口的负载均衡器服务
- java - java.lang.IllegalArgumentException:重复的服务器名称类型 0
- php - 将自定义日期范围字段添加到 WooCommerce Admin 单个产品
- jmeter - Jmeter 5.4 - 线程 Thread[AWT-EventQueue-0,6,main] 中的 java.lang.NullPointerException
- python - 在 Django 的一个地方从多个模型中获取 N 个最近的对象