MySQL周内训参照3、简单查询与多表联合复杂查询

 基础查询

1、查询用户信息,仅显示用户的姓名与手机号,用中文显示列名。中文显示姓名列与手机号列

SELECT user_id  AS '编号', phone AS '电话' FROM user;

2. 根据订购表进行模糊查询,模糊查询需要可以走索引,需要给出explain语句。使用explain测试给出的查询语句,需要显示走了索引查询。

CREATE INDEX idx_order_id ON `order`(order_id);

 

不能用模糊查询的符号作为查询的开头,否则不走索引。

EXPLAIN SELECT * FROM `order` WHERE order_id LIKE '小%';

 

可以看到已经走了索引了。

3.统计用户订单信息,查询所有用户的下单数量,并进行倒序排列。使用聚合函数查询处所有用户的订单数量,倒序排列结果

SELECT user_id, COUNT(order_id) AS '订购数量'
FROM `order`
GROUP BY user_id
ORDER BY `订购数量` DESC;

 

复杂查询 

 1.查询用户的基本信息,订单信息。正确显示用户信息,正确显示订单信息,正确进行多表联合查询

    u.user_id, -- 选择用户的用户ID
    u.username, -- 选择用户名

		u.age,-- 选择年龄
		u.sex,-- 选择性别
                   u.phone, -- 选择电话
		u.email, -- 选择邮箱
           	uo.quantity,
		uo.book_id
FROM 
    user u -- 从用户表中选择数据
JOIN 
    `order` uo ON u.user_id = uo.user_id; -- 使用JOIN连接用户表和订单表,连接条件是两个表中的user_id相同

 


2.查看订单中下单最多的书籍。正确使用聚合函数,正确使用子查询,正确显示结果 

SELECT 
    pt.book_id -- 选择书籍名称
FROM 
    `books` p -- 从书籍表中选择数据
JOIN 
    `order` pt ON p.book_id = pt.book_id -- 使用JOIN连接书籍表和订单表,连接条件是书籍表中的book_id与订单表中的book_id相同
JOIN 
    (SELECT 
         book_id, -- 子查询中选择书籍编号ID
         COUNT(order_id) AS order_count -- 子查询中对每个书籍ID的订单ID进行计数,并命名为order_count
     FROM 
         `order` -- 子查询从订单表中选择数据
     GROUP BY 
         book_id -- 按书籍ID进行分组
     ORDER BY 
         order_count DESC -- 按订单数量降序排列
     LIMIT 3) oi ON p.book_id = oi.book_id; -- 子查询的结果作为临时表oi,与产品表通过book_id进行连接

 

3.查询 订单中购买书籍最多的数量,和库存中剩余书籍总数量

SELECT 
    `order_id` -- 选择用户的所有信息
    quantity, -- 选择用户ID
    stock_qty -- 选择书籍库存
FROM 
    user `order`  -- 从用户表中选择数据
JOIN 
    (SELECT 
         order_id, -- 子查询中选择用户ID
         SUM(quantity) AS total_spent -- 子查询中对每个用户的订单总数量进行求和,并命名为total_spent
     FROM 
         `order` -- 子查询从订单表中选择数据
     GROUP BY 
         order_id -- 按用户ID进行分组
     ORDER BY 
         total_spent DESC -- 按总消费金额降序排列
     LIMIT 1) o ON order_id= o.order_id -- 子查询的结果作为临时表o,与用户表通过user_id进行连接
JOIN 
    `stock` uo ON uo.stock_id = order_id; -- 使用JOIN连接用户表和钱包表,连接条件是两个表中的user_id相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/750262.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是yum源?如何对其进行配置?

哈喽,大家好呀!这里是码农后端。今天来聊一聊Linux下的yum源及其配置相关的内容。简单来说,yum源就相当于一个管理软件的工具,可以想象成一个很大的仓库,里面存放着各种我们所需要的软件包及其依赖。 一、Linux下软件包…

【Linux进阶】基础IO函数详解

1.函数open和openat 调用open或openat函数可以打开或创建一个文件。 #include <fcntl.h> int open(const char *path, int ofag, ... /* mode_t mode */);int openat (int fd, const char *path, int oflag, ... /* mode_t mode */); 我们将最后一个参数写为...&#x…

Vue报错:Component name “xxx” should always be multi-word vue/multi-word-component

问题&#xff1a;搭建脚手架时报错&#xff0c;具体错误如下&#xff1a; ERROR in [eslint] E:\personalProject\VueProjects\vueproject2\src\components\Student.vue10:14 error Component name "Student" should always be multi-word vue/multi-word-compon…

windows下以服务方式安装prometheus和grafana

grafana 找到confi下的defaults.ini&#xff0c;找到http_port修改端口号 # The HTTP port to use http_port 3000启动 grafana-server.exe访问localhost:8601即可 下载winsw https://github.com/winsw/winsw 新建grafanaservice.xml <service><id>grafana&…

第一后裔/The First Descendant延迟高的解决方法

第一后裔/The First Descendant是一款备受玩家关注的射击游戏&#xff0c;该作拥有多个角色&#xff0c;并为其设定不同的概念和战斗风格&#xff0c;以及技能点&#xff0c;不仅能让玩家畅快作战&#xff0c;还能通过各种道具&#xff0c;不断强化角色能力值&#xff0c;让其战…

接口自动化测试框架实战(Pytest+Allure+Excel)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1. Allure 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不…

牛筋面,一口难忘的劲道滋味

在众多的平凉美食中&#xff0c;牛筋面以其独特的口感和丰富的口味&#xff0c;赢得了无数食客的喜爱。牛筋面&#xff0c;这一名字就给人一种坚韧、有嚼劲的印象。它并非由牛筋制成&#xff0c;而是因其面条的口感如牛筋般劲道而得名。牛筋面的制作过程颇具巧思。选用优质的面…

WebStorm配置路径别名

项目是 ViteVueTs 新建一个 jsconfig.json文件 {"compilerOptions": {"baseUrl": ".","paths": {"/*": ["./src/*"]}},"exclude": ["node_modules", "dist"] }然后在 vite.confi…

【Linux】进程优先级 | 环境变量

目录 Ⅰ. 进程优先级&#xff08;Process Priority&#xff09; 1. 什么是进程优先级&#xff1f; 2. 查看系统进程 3. 修改进程优先级 4.优先级调度原理 Ⅱ. 进程的切换&#xff08;Process Switch&#xff09; 1. 竞争与独立 2. 并行与并发 3. 进程抢占 4.实现切换…

MYSQL存储过程的创建

关于存储过程的题目 1、创建存储过程,查看user表中的所有数据 2、创建存储过程avg_order_quantity,返回所有订单的平均工资 3、创建存储过程show_max_bprice,用来查看bookS的单价最贵的价格 4、创建存储过程show_min_bprice,用来查看bookS的单价最低的价格&#xff0c;并将…

Unity免费领高级可视化编程自定义节点工具AI行为UI流程对话树状态机逻辑等FlowReactor价值50刀high level20240627

刚发现一款类似虚幻蓝图的可视化编程工具&#xff0c;原价50刀&#xff0c;现在免费领取了。赶紧去领取入库&#xff0c;防止作者涨价。 高级可视化编程自定义节点工具&#xff1a;https://prf.hn/l/BJbdvnD 作者其他资产&#xff1a;https://prf.hn/l/YLAYznV Unity免费领高级…

C#udpClient组播

一、0udpClient 控件&#xff1a; button&#xff08;打开&#xff0c;关闭&#xff0c;发送&#xff09;&#xff0c;textbox&#xff0c;richTextBox 打开UDP&#xff1a; UdpClient udp: namespace _01udpClient {public partial class Form1 : Form{public Form1(){Initi…

springboot+vue+mybatis母婴二手销售系统+PPT+论文+讲解+售后

目前由于我国二手销售的规模较小,同发达国家相比,二手销售比重始终偏低,消费总额增长缓慢,进一步抑制了市场消费的提升,随着市场竞争的日益激烈,虽然许多商家主动选用二手销售模式,但却缺乏对其充分的重视与销售风险的良性控制,一些商家没有建立独立的信用实践管理部门,无法在交…

pytest测试框架pytest-order插件自定义用例执行顺序

pytest提供了丰富的插件来扩展其功能&#xff0c;本章介绍插件pytest-order&#xff0c;用于自定义pytest测试用例的执行顺序。pytest-order是插件pytest-ordering的一个分支&#xff0c;但是pytest-ordering已经不再维护了&#xff0c;建议大家直接使用pytest-order。 官方文…

如何预防和处理他人盗用IP地址?

IP地址的定义及作用 解释 IP 地址在互联网中的作用。它是唯一标识网络设备的数字地址&#xff0c;类似于物理世界中的邮政地址。 1、IP地址盗窃的定义 解释一下什么是IP地址盗用&#xff0c;即非法使用他人的IP地址或者伪造IP地址的行为&#xff0c;这种行为可能引发法律和安…

DV SSL证书如何升级到OV SSL 证书

随着互联网的发展和用户对数据安全性的关注&#xff0c;越来越多的网站开始采用SSL证书来保护用户的隐私和数据。在选择SSL证书时&#xff0c;有些网站可能会首先选择经济实惠的DV&#xff08;域名验证&#xff09;证书&#xff0c;但随着业务的发展和用户需求的增加&#xff0…

ONLYOFFICE 8.1版本桌面编辑器测评

随着科技的进步和办公需求的不断提升&#xff0c;办公软件成为了日常工作中不可或缺的一部分。近日&#xff0c;ONLYOFFICE 推出了其最新版本的桌面编辑器——8.1版。 本文将详细介绍ONLYOFFICE 8.1版本桌面编辑器的各项新功能和改进&#xff0c;帮助用户了解并更好地使用这一高…

谷粒商城实战(044集群学习-redis集群)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第365p-第p367的内容 介绍 以前的分区方式 客户端分区 代理分区 高可用方式 哨兵方式&#xff08;3.0以前的方式&#xff09; redis-cluster分…

【区间动态规划】1771. 由子序列构造的最长回文串的长度

本文涉及知识点 动态规划汇总 LeetCode1771. 由子序列构造的最长回文串的长度 给你两个字符串 word1 和 word2 &#xff0c;请你按下述方法构造一个字符串&#xff1a; 从 word1 中选出某个 非空 子序列 subsequence1 。 从 word2 中选出某个 非空 子序列 subsequence2 。 连…

数据结构之树的超详细讲解(附C实现代码)

目录 树的基本性质 二叉树 定义树结点结构体 建树 根据二叉树的层次遍历建树 根据前序或后序建树 遍历二叉树 前序遍历 中序遍历 后序遍历 根据前序和中序序列输出后序序列 根据后序和中序序列输出前序序列 根据前序和后序判断树的个数 求树的高度(DFS) 求树的宽…