Home Database Mysql Tutorial Share how to use count(), group by, order by in mysql

Share how to use count(), group by, order by in mysql

Jan 17, 2018 am 10:47 AM
mysql order

This article mainly shares with you how to use count(), group by, and order by in mysql. In mysql, order by sorting query, asc ascending order, desc descending order, group by group query, and having can only be used in the group by clause. Acting within a group, the having conditional clause can be directly followed by a function expression. Query statements using the group by clause require the use of aggregate functions.

I recently encountered a problem when doing IM, and these three keywords were used at the same time. It is to query the offline message details of a person. The details returned by our server to the client include three contents. The first one requires listing which people or groups have sent you messages during the offline period. The second one is this How many offline messages has been sent by a certain person or group, and the third one takes out the latest one and displays it. Obviously, group by groups which people or groups have sent you offline messages, count() gets the number of offline messages, and order by time sorts out the latest messages.

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc group by from_company_id, from_user_id;

Then as expected, an error will be reported when group by and order by are retrieved together. We can use nested subqueries.

select count(1) as cnt, msg_data from (select * from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc) as temp_table group by from_company_id, from_user_id;<br>

We can group the sorted result set and calculate the quantity. There is another hidden pit here, which I accidentally avoided. In fact, count() will cause order by sorting to be invalid. For example:

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc;

The last record obtained by this statement, the msg_data is actually the result of no sorting at all, which is the original order of the database , it should be the message inserted first, that is, the message with an older time. In order to avoid this problem, the nested subquery is sorted here first and then used to count() to avoid it. I escaped unintentionally, but luckily I found out after repeatedly changing the sentence and testing it.

Related recommendations:

10 recommended articles about count()

##Using Group By to group multiple fields in MySql Method

Detailed explanation of Order By multi-field sorting rules in MySQL

The above is the detailed content of Share how to use count(), group by, order by in mysql. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP's big data structure processing skills PHP's big data structure processing skills May 08, 2024 am 10:24 AM

PHP's big data structure processing skills

How to optimize MySQL query performance in PHP? How to optimize MySQL query performance in PHP? Jun 03, 2024 pm 08:11 PM

How to optimize MySQL query performance in PHP?

How to use MySQL backup and restore in PHP? How to use MySQL backup and restore in PHP? Jun 03, 2024 pm 12:19 PM

How to use MySQL backup and restore in PHP?

What are the application scenarios of Java enumeration types in databases? What are the application scenarios of Java enumeration types in databases? May 05, 2024 am 09:06 AM

What are the application scenarios of Java enumeration types in databases?

How to insert data into a MySQL table using PHP? How to insert data into a MySQL table using PHP? Jun 02, 2024 pm 02:26 PM

How to insert data into a MySQL table using PHP?

How to fix mysql_native_password not loaded errors on MySQL 8.4 How to fix mysql_native_password not loaded errors on MySQL 8.4 Dec 09, 2024 am 11:42 AM

How to fix mysql_native_password not loaded errors on MySQL 8.4

How to use MySQL stored procedures in PHP? How to use MySQL stored procedures in PHP? Jun 02, 2024 pm 02:13 PM

How to use MySQL stored procedures in PHP?

How to create a MySQL table using PHP? How to create a MySQL table using PHP? Jun 04, 2024 pm 01:57 PM

How to create a MySQL table using PHP?

See all articles