mysql中“group by、having、order by、limit”的顺序及用法是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中“group by、having、order by、limit”的顺序及用法是啥?相关的知识,希望对你有一定的参考价值。

语句顺序
select
选择的列
from

where
查询的条件
group
by
分组属性
having
分组过滤的条件
order
by
排序属性
limit
起始记录位置,取记录的条数
其中
select
选择的列
from

where
查询的条件
以上是基本的结构
group
by
分组属性
having
分组过滤的条件
这个是按照分组属性进行分组,所有分组属性上值相同的记录被分为一组,作为结果中的一条记录,后面的having是对分组进行过滤的条件,必须和group
by一起使用
order
by
排序属性
是对结果集合进行排序,可以是升序asc,也可以是降序desc
limit
起始记录位置,取记录的条数
对记录进行选取,主要用来实现分页功能
参考技术A -- 语法:
select select_list

from table_name

[ where search_condition ]

[ group by group_by_expression ]

[ having search_condition ]

[ order by order_expression [ asc | desc ] ]
[limit m,n]
-- 示例:
-- limit 0,10是从第一条开始,取10条数据
select classno from table_name
group by classno
having(avg(成绩)>70)
order by classno
limit 0,10本回答被提问者采纳

Mysql:在mysql视图中调用mysql存储过程函数

【中文标题】Mysql:在mysql视图中调用mysql存储过程函数【英文标题】:Mysql: Calling mysql stored procedure function inside mysql view 【发布时间】:2021-10-08 04:22:12 【问题描述】:

我有一个存储过程和一个单独创建的视图。我试图从存储过程中调用 minValmaxVal 到我的视图,但我不知道为什么我无法使用 MySql Workbench 调用它

存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `getMinMaxVal`(
    IN age int,
    OUT minVal double(8,2), 
    OUT maxVal double(8,2))
BEGIN
    SET minVal = 45.64;
    SET maxVal = 55.97;
END

MySql 视图

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `test_view` AS
    SELECT
        getMinMaxVal(`user_data`.`age`,minVal) AS `min_range`,
        getMinMaxVal(`user_data`.`age`,maxVal) AS `max_range`,
    FROM
        (`reports`
        JOIN `user_data` ON (`reports`.`uhd` = `user_data`.`id`))
    WHERE
        `reports`.`active` = 1
    ORDER BY `reports`.`created_at` DESC

【问题讨论】:

什么是getWeightRanges(),它与getMinMaxval()有什么关系? 不能在SELECT 查询中使用存储过程。也许你应该写一个函数。但它必须返回一个值,函数不能有OUT参数。 这能回答你的问题吗? MySQL stored procedure vs function, which would I use when? @Barmar 哎呀,我错误地粘贴了其他内容。已经更新了上面的代码 @Barmar 你的意思是我们也必须在视图中创建存储过程吗? 【参考方案1】:

您需要使用存储函数,每个值一个。

CREATE FUNCTION getMinVal(IN age INT) RETURN FLOAT
RETURN 45.64;

CREATE FUNCTION getMaxVal(IN age INT) RETURN FLOAT
RETURN 55.97;

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `test_view` AS
    SELECT
        getMinVal(`user_data`.`age`) AS `min_range`,
        getMaxVal(`user_data`.`age`) AS `max_range`,
    FROM
        (`reports`
        JOIN `user_data` ON (`reports`.`uhd` = `user_data`.`id`))
    WHERE
        `reports`.`active` = 1
    ORDER BY `reports`.`created_at` DESC

【讨论】:

非常感谢这对我有用。如果您认为这对其他人有帮助,请投票赞成这个问题,因为我看到许多其他人发现了类似的事情。我希望这个能帮助他们

以上是关于mysql中“group by、having、order by、limit”的顺序及用法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

mac装好了mysql怎么打开

cmd中怎么进mysql

pychar中如何装mysql

mysql数据库会中木马吗?

如何在mysql中显示中文???

怎么往mysql中写入数据?