SQL 查询:通过用户 ID 获取用户信息、总花费、订单数量和最近订单时间
使用 SQL 查询用户数据:姓名、总花费、订单数量和最近订单时间
本文档展示如何使用 SQL 查询语句从 Users 和 Orders 表中获取用户数据,包括姓名、总花费、订单数量和最近订单时间。
数据库表结构:
Orders 表
CREATE TABLE `Orders` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '订单的唯一标识符',
`user_id` int NOT NULL COMMENT '订单所属用户的唯一标识符',
`status` varchar(255) NOT NULL COMMENT '订单的状态',
`total` decimal(10,2) NOT NULL COMMENT '订单的总金额',
`payment_method` varchar(255) NOT NULL COMMENT '订单的支付方式',
`shipping_method` varchar(255) NOT NULL COMMENT '订单的配送方式',
`shipping_address` varchar(255) NOT NULL COMMENT '订单的配送地址',
`shipping_phone` varchar(255) NOT NULL COMMENT '订单的配送电话',
`shipping_time` timestamp NULL DEFAULT NULL COMMENT '订单的配送时间',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单的创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '订单的更新时间',
PRIMARY KEY (`id`)
)
Users 表
CREATE TABLE `Users` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '用户的唯一标识符',
`email` varchar(255) NOT NULL COMMENT '用户的邮箱地址',
`password` varchar(255) NOT NULL COMMENT '用户的密码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户的名字',
`default_address_id` int DEFAULT NULL COMMENT '用户的默认地址',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户的创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '用户的更新时间',
`permission` varchar(255) NOT NULL COMMENT '用户的权限',
PRIMARY KEY (`id`,`email`) USING BTREE
)
SQL 查询语句:
SELECT u.name AS user_name, SUM(o.total) AS total_spent, COUNT(o.id) AS order_count, MAX(o.updated_at) AS last_order_time
FROM Users u
LEFT JOIN Orders o ON u.id = o.user_id
WHERE u.id = [用户id]
GROUP BY u.id;
解释:
SELECT: 选择要返回的列。u.name AS user_name: 选择用户名字列,并将其别名为user_name。SUM(o.total) AS total_spent: 计算所有订单总金额的总和,并将其别名为total_spent。COUNT(o.id) AS order_count: 统计用户订单数量,并将其别名为order_count。MAX(o.updated_at) AS last_order_time: 获取用户最后一次订单的时间,并将其别名为last_order_time。FROM Users u: 从Users表中选择数据,并将其别名为u。LEFT JOIN Orders o ON u.id = o.user_id: 左连接Users和Orders表,根据user_id列匹配对应数据。WHERE u.id = [用户id]: 过滤符合指定用户 ID 的数据。GROUP BY u.id: 按照user_id进行分组,以便进行聚合计算。
执行查询后,将返回以下数据:
user_name: 用户的名字total_spent: 用户总花费order_count: 用户订单数量last_order_time: 用户最后一次订单时间
注意:
- 将
[用户id]替换为实际的用户 ID。 - 该查询语句可以帮助您从
Users和Orders表中获取用户的信息,并进行分析和统计。
希望本文档能帮助您理解如何使用 SQL 查询语句获取用户相关信息。
原文地址: https://www.cveoy.top/t/topic/nGFt 著作权归作者所有。请勿转载和采集!