《深入浅出MySQL》问答录(五)

在这里插入图片描述

本系列出自《深入浅出MySQL》,全文以问答形式展开,是我的个人学习笔记。

问答录

先看花絮

Q:要用到ELSE吗?

A:看你咯,无所谓。


Q:如果没有ELSE而且列也不符合任何一个WHEN条件,会发生什么事?

A:在你想更新的列里面不会发生任何改变。


Q:如果我只想对部分列套用CASE表达式,应该怎么做呢?

A:可以加上WHERE,可以在END后加上WHERE子句。这样,CASE就只会套用在符合WHERE子句的列上。

扫描二维码关注公众号,回复: 11396951 查看本文章

CASE表达式可以搭配UPDATE以外的语句吗?

A:why not?


Q:讲到MIN,如果查询中的列有NULL,这会有上面影响吗?

A:好问题。NULL其实不会有影响,因为NULL代表此处无值,而不是此值为0.


花絮

CASE语句

看图:
在这里插入图片描述
在这里插入图片描述

现在怎么办?是像这样吗?

在这里插入图片描述

这样要执行n次啊。。。

那有没有更好的办法,其实在主语言中,这不过就是个分支语句的事情嘛,奈何SQL语言我不熟啊。。。

没事,一直以来不懂,从今以后懂了:

UPDATE my_table
SET new_column =
CASE
	WHEN column1 = somevalue1
		THEN newvalue1
	WHEN column2 = somevalue2
		THEN newvalue2
	ELSE newvalue3
END;

在这里插入图片描述

ORDER BY排序

1、升序排序:ASC | 降序排序:DESC

2、SQL排序规则

在这里插入图片描述

多列排序:

越靠前的列权重越高,拥有对后面列的一票否决权。

GROUP BY 分组

SELECT first_name,SUM(sales)
FROM cookie_sales
GROUP BY first_name
ORDER BY SUM(sales) DESC
;
SELECT first_name,AVG(sales)
FROM cookie_sales
GROUP BY first_name
ORDER BY AVG(sales) DESC
;
SELECT first_name,MAX(sales)
FROM cookie_sales
GROUP BY first_name
;
SELECT first_name,MIN(sales)
FROM cookie_sales
GROUP BY first_name
;

COUNT,计数

SELECT COUNT(sale_date)
FROM cookie_sales
;

DISTINCT,取独

SELECT DISTINCT sale_date
FROM cookie_sales
ORDER BY sale_date
;
SELECT COUNT(DISTINCT sale_date)
FROM cookie_sales
;

LIMIT:限制查询数量

SELECT first_name,SUN(sales)
FROM cookie_sales
GROUP BY first_name
ORDER BY SUN(sales) DESC
LIMIT 2 OFFSET 4	--跳过两条,查询两条记录
--也可以这样写:LIMIT 4,2
;

猜你喜欢

转载自blog.csdn.net/qq_43762191/article/details/107513311