MySQL查询的问题,纠结好久了
就是想要查询4个月内发表文章最多的3个用户(用户当然不能重复),当然文章得是最新的,因为页面上的列表显示是用户名和最新的文章标题
php代码如下:
$m4 = 当前时间戳 - 86400 * 124;
具体sql如下:
select uid,uname,title 表名 where dateline>$m4 group by uid order by dateline desc
虽然这样我能够查询出来4个月内不重复的用户,但是文章标题却是这个用户发表的第一篇文章,不是最后发布的文章。
另外需要注意的是:
1、不能使用联合查询
2、不能使用子查询
T-SQL:
create table article ( `id` int(11) unsigned not null auto_increment comment '编号id', `subject` varchar(300) not null comment '标题', `uid` mediumint(8) unsigned not null comment '用户编号', `uname` varchar(20) not null comment '用户名', `dateline` int(10) unsigned not null comment '发表时间', primary key(id) ) engine=myisam charset=utf8 comment='文章信息表'; insert article (subject, uid, uname, dateline) values ('标题1', 2, '用户2', 1436708324), ('标题2', 2, '用户2', 1438515690), ('标题3', 2, '用户2', 1438608818), ('标题4', 1, '用户1', 1436458649), ('标题5', 2, '用户2', 1437273021), ('标题6', 2, '用户2', 1438687437);
回复内容:
就是想要查询4个月内发表文章最多的3个用户(用户当然不能重复),当然文章得是最新的,因为页面上的列表显示是用户名和最新的文章标题
php代码如下:
$m4 = 当前时间戳 - 86400 * 124;
具体sql如下:
select uid,uname,title 表名 where dateline>$m4 group by uid order by dateline desc
虽然这样我能够查询出来4个月内不重复的用户,但是文章标题却是这个用户发表的第一篇文章,不是最后发布的文章。
另外需要注意的是:
1、不能使用联合查询
2、不能使用子查询
T-SQL:
create table article ( `id` int(11) unsigned not null auto_increment comment '编号id', `subject` varchar(300) not null comment '标题', `uid` mediumint(8) unsigned not null comment '用户编号', `uname` varchar(20) not null comment '用户名', `dateline` int(10) unsigned not null comment '发表时间', primary key(id) ) engine=myisam charset=utf8 comment='文章信息表'; insert article (subject, uid, uname, dateline) values ('标题1', 2, '用户2', 1436708324), ('标题2', 2, '用户2', 1438515690), ('标题3', 2, '用户2', 1438608818), ('标题4', 1, '用户1', 1436458649), ('标题5', 2, '用户2', 1437273021), ('标题6', 2, '用户2', 1438687437);
思路应该是:
先找出四个月内发表文章最多的3个用户;
再根据用户id查询该用户最新的文章标题;
sql如下:
找出四个月内发表文章最多的3个用户
<code>select uid,name,count(subject) as article_count from article where dateline>$m4 group by uid order by article_count desc, dateline desc limit 3</code>
根据用户id查询该用户最新的文章标题:
<code>select subject from article where uid='uid' order by dateline desc limit 1</code>
select * from (
<code>select uid,uname,title 表名 where dateline>$m4 order by dateline DESC</code>
) a group by uid
1、不能使用联合查询
2、不能使用子查询
那只好尝试一下为 dateline
建立逆序索引
都不能那就查两次呗
自行脑补一下MySQL的having语法
我是 新手,不过group by这样写能执行吗

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The future of PHP will be achieved by adapting to new technology trends and introducing innovative features: 1) Adapting to cloud computing, containerization and microservice architectures, supporting Docker and Kubernetes; 2) introducing JIT compilers and enumeration types to improve performance and data processing efficiency; 3) Continuously optimize performance and promote best practices.

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

You can open phpMyAdmin through the following steps: 1. Log in to the website control panel; 2. Find and click the phpMyAdmin icon; 3. Enter MySQL credentials; 4. Click "Login".

PHP is not dying, but constantly adapting and evolving. 1) PHP has undergone multiple version iterations since 1994 to adapt to new technology trends. 2) It is currently widely used in e-commerce, content management systems and other fields. 3) PHP8 introduces JIT compiler and other functions to improve performance and modernization. 4) Use OPcache and follow PSR-12 standards to optimize performance and code quality.

Redis uses a single threaded architecture to provide high performance, simplicity, and consistency. It utilizes I/O multiplexing, event loops, non-blocking I/O, and shared memory to improve concurrency, but with limitations of concurrency limitations, single point of failure, and unsuitable for write-intensive workloads.

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

How to connect to MySQL using phpMyAdmin? The URL to access phpMyAdmin is usually http://localhost/phpmyadmin or http://[your server IP address]/phpmyadmin. Enter your MySQL username and password. Select the database you want to connect to. Click the "Connection" button to establish a connection.

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.
