MySQL- sql语句基础

文章目录

    • 1.select后对表进行修改(delete)
    • 2.函数GROUP_CONCAT()
    • 3.使用正则表达式
    • 3.DATE_FORMAT()
    • 4.count() 加条件
    • 关于GROUP BY 使用可能忽悠而导致查询结果错误的点

1.select后对表进行修改(delete)

报错:You can’t specify target table ‘Person’ for update in FROM clause
原因:mysql不能在同一语句中先select出同一表中的某些值,然后对这个表做修改
错误写法

delete from Person 
where id not in(select min(id) idfrom Person group by email 
)

解决方法:添加临时表

正确写法

delete from Person 
where id not in(select * from (select min(id) idfrom Person group by email ) t1
)

2.函数GROUP_CONCAT()

我们可以使用函数 GROUP_CONCAT() 将多行中的多个值组合成一个字符串。下面显示了 GROUP_CONCAT() 函数的语法:

GROUP_CONCAT(DISTINCT 字段 ----去重ORDER BY 字段 ----ASC/DESCSEPARATOR sep ---分隔符: SEPARATOR ','
);

用例

select sell_date ,count(distinct product) num_sold ,group_concat(distinct product separator ',') products
from Activities 
group by sell_date 

在这里插入图片描述

3.使用正则表达式

思路
一般来说,如果你被要求匹配一个字符串,应该最先想到写一个正则表达式模式进行匹配。

正则表达式提供各种功能,以下是一些相关功能:

正则表达式书写格式
^:表示一个字符串或行的开头
[a-z]:表示一个字符范围,匹配从 a 到 z 的任何字符。
[0-9]:表示一个字符范围,匹配从 0 到 9 的任何字符。
[a-zA-Z]:这个变量匹配从 a 到 z 或 A 到 Z 的任何字符。请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。
[^a-z]:这个变量匹配不在 a 到 z 范围内的任何字符。请注意,字符 ^ 用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。
[a-z]*:表示一个字符范围,匹配从 a 到 z 的任何字符 0 次或多次。
[a-z]+:表示一个字符范围,匹配从 a 到 z 的任何字符 1 次或多次。
.:匹配任意一个字符。
\.:表示句点字符。请注意,反斜杠用于转义句点字符,因为句点字符在正则表达式中具有特殊含义。还要注意,在许多语言中,你需要转义反斜杠本身,因此需要使用\.。
$:表示一个字符串或行的结尾。

例子

SELECT user_id, name, mail
FROM Users
-- 请注意,我们还转义了`@`字符,因为它在某些正则表达式中具有特殊意义
WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';

3.DATE_FORMAT()

将日期值格式化为特定格式,请使用DATE_FORMAT函数。 DATE_FORMAT函数的语法如下:

DATE_FORMAT(date,format);  ---date 字段,format 需要格式
DATE_FORMAT(trans_date,'%Y-%m')  ---%Y-%m 2023-08
formatdate
%D英文后缀如:0th, 1st, 2nd等的一个月之中的第几天
%d如果是1个数字(小于10),那么一个月之中的第几天表示为加前导加0, 如:00, 01,02, …31
%H24小时格式的小时,前导加0,例如:00,01…23
%h小时,12小时格式,带前导零,例如:01,02 … 12
%Y表示年份,四位数,例如2000,2001
%y表示年份,两位数,例如00,01
%m具有前导零的月份名称,例如:00,01,02,… 12
%M月份全名称,例如:January, February,…December
formatdate
%Y-%m-%d2017/04/30
%Y-%m2017/04

4.count() 加条件

  1. COUNT( state=‘approved’ OR NULL ) >需要在后面 + or null

  2. COUNT( IF (state = ‘approved’, 1, NULL ) )

需要注意的是,count只有在字段数据为NULL时才不计入数量,如果IF (state = ‘approved’, 1, NULL ) 改为IF (state = ‘approved’, 1, 0 ) ,那么非 approved的数据也会被计入其中导致错误。

关于GROUP BY 使用可能忽悠而导致查询结果错误的点

 select customer_pref_delivery_datefrom Delivery group by customer_idhaving min(order_date) = customer_pref_delivery_date

这个sql会执行结果是错误的,因为部分数据会被忽略掉,比如那些有多条数据的(一个customer_id可以有多条记录) having min(order_date) = customer_pref_delivery_date 拿到最小的order_date后去跟这个组内的customer_pref_delivery_date去比较,但我们不能保证它拿的是不是min(order_date) 对应的那个customer_pref_delivery_date,所以这里的 = ,即比较,是有问题的

| 328 | 41 | 2019-7-10 | 2019-7-10 |
| 557 | 41 | 2019-7-25 | 2019-7-25 |
| 224 | 81 | 2019-8-31 | 2019-8-31 |
| 602 | 81 | 2019-8-29 | 2019-8-29 |
| 268 | 88 | 2019-7-6 | 2019-7-6 |
| 686 | 88 | 2019-8-25 | 2019-8-26 |
以上是符合条件的,但是会被筛选掉,导致错误
r=如果非要这么写,那么需要搞清楚要比较的是什么customer_pref_delivery_date,比如这里要的是最小的customer_pref_delivery_date

  select customer_pref_delivery_datefrom Delivery group by customer_idhaving min(order_date) = min(customer_pref_delivery_date)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习记录~2023.8.3~JavaScript重难点实例精讲~第5章 DOM与事件

第 5 章 DOM与事件 前言5.1 DOM选择器5.1.1 传统原生JavaScript选择器(1)通过id定位(2)通过class定位(3)通过name属性定位(4)通过标签名定位 5.1.2 新型的querySelector选择器和quer…

【论文阅读】 Model Sparsity Can Simplify Machine Unlearning

Model Sparsity Can Simplify Machine Unlearning 背景主要内容Contribution Ⅰ:对Machine Unlearning的一个全面的理解Contribution Ⅱ:说明model sparsity对Machine Unlearning的好处Pruning方法的选择sparse-aware的unlearning framework Experiments…

AI 绘画Stable Diffusion 研究(十一)sd图生图功能详解-美女换装

免责声明: 本案例所用安装包免费提供,无任何盈利目的。 大家好,我是风雨无阻。 为了让大家更直观的了解图生图功能,明白图生图功能到底是干嘛的,能做什么事情?今天我们继续介绍图生图的实用案例-美女换装的制作。 对于…

实验一 ubuntu 网络环境配置

ubuntu 网络环境配置 【实验目的】 掌握 ubuntu 下网络配置的基本方法,能够通过有线网络连通 ubuntu 和开发板 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行,以“#”开头的…

Android 命令行如何运行 JAR 文件

​ 最近有位老哥问了一个问题,说如果将java的jar文件在Android中执行?这个其实很简单的一个问题,直接写个App放里面不就可以了么?但是人家说没有App,直接使用命令行去运行。说明这个需求的时候,把我给整懵了…

无需公网IP——搭建web站点

文章目录 概述使用 Raspberry Pi Imager 安装 Raspberry Pi OS设置 Apache Web 服务器测试 web 站点安装静态样例站点将web站点发布到公网安装 Cpolar内网穿透cpolar进行token认证生成cpolar随机域名网址生成cpolar二级子域名将参数保存到cpolar配置文件中测试修改后配置文件配…

python控制obs实现无缝切换场景!obs-websocket-py

前言 最近一直在研究孪生数字人wav2lip。目前成果可直接输入高清嘴型,2070显卡1分钟音频2.6分钟输出。在直播逻辑上可以做到1比1.3这样,所以现在开始研究直播。在逻辑上涉及到了无缝切换,看到csdn上有一篇文章还要vip解锁。。。那自己研究吧…

AMBA总线协议(4)——AHB(二)

目录 一、前言 二、AHB操作概述 三、AHB 基本传输 1、简单传输 2、带有等待的传输 3、多重传输 四、AHB传输类型 五、小结 一、前言 在之前的文章中对于AMBA AHB做了一个简单的介绍,AHB 主要用于高性能模块(如 CPU、DMA 和 DSP 等)之间的连接&#x…

dB(分贝)定义及其应用(音量 dB dBA 计算 调整)

一、dB的诞生背景 dB是英文“decibel”的简写,其中,deci表示十分之一,Bel表示“贝”。Decibel,分贝就是十分之一贝。“贝”是“贝尔”的简称,是以杰出科学家Alexander Graham Bell的名字来命名的单位。贝尔在1876年获…

Ubuntu服务器service版本初始化

下载 下载路径 官网:https://cn.ubuntu.com/ 下载路径:https://cn.ubuntu.com/download 服务器:https://cn.ubuntu.com/download/server/step1 点击下载(22.04.3):https://cn.ubuntu.com/download/server…

《知识图谱与大模型融合实践研究报告》发布,创邻科技参编

近期,第三届知识图谱产业发展论坛暨知识图谱与大模型融合研讨会在北京召开。会上,《知识图谱与大模型融合实践研究报告》正式发布! 该白皮书是由中国电子技术标准化研究院依托知识图谱产业推进方阵、全国信标委人工智能分委会知识图谱工作组…

如何准备软件开发项目成本估算?

软件开发的成本估算是出了名的困难。对于软件开发项目来说,预算超支反而是常态,而不是例外。 在开始估算之前,请从业务角度了解项目的战略目标和你的目标。你可能计划尽可能赚取更多利润,探索新技术,或者在项目可能亏…

【002】学习笔记之typescript的【任意类型】

任意类型 顶级类型:any类型和 unknown 类型 any类型 声明变量的时候没有指定任意类型默认为any任意类型都可以赋值给any,不需要检查类型。也是他的弊端如果使用any 就失去了TS类型检测的作用 unknown 类型 TypeScript 3.0中引入的 unknown 类型也被认为…

【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

认识Junit

1. 前言 2. Junit注解 2.1. 常用的注解 2.1.1. Test 表示当前方法是一个测试方法(不需要main来执行) Test void Test01() throws InterruptedException {System.out.println("测试用例1");WebDriver webDriver new ChromeDriver();webDriver.get("https:/…

Web会话技术

会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,…

快速入门vue3新特性和新的状态管理库pinia

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 Vue3.3新特性 defineOptions defineModel pinia 介绍 与 Vuex 3.x/4.x 的比较 安装 核心概念 定义…

ASP.NET实验室信息管理系统源码 LIMS成品源码

实验室信息管理系统(Laboratory Information Management System)简称LIMS系统,是指通过计算机对实验室的各种信息进行管理的计算机软、硬件系统,并将实验室的设备各种信息通过计算机网络连接起来,采用科学的管理思想和…

⛳ TCP 协议详解

目录 ⛳ TCP 协议详解🎨 一、TCP / IP 协议的分层模型🏓 1.1、应用层🧸 1.2、传输层🔮 1.3、网络层🎯 1.4、链路层 🏭 二、HTTP 报文传输原理🥅 2.1、HTTP 报文传输💎 2.2、封装和分…

贝锐蒲公英助力电子公交站牌联网远程运维,打造智慧出行新趋势

在现代城市公共交通系统中,我们随处可见电子公交站牌的身影。作为公共交通服务的核心之一,电子公交站牌的稳定运行至关重要,公交站台的实时公交状况、公共广告信息,是市民候车时关注的焦点。 某交通科技公司在承接某市智能电子站牌…