Rumah > pangkalan data > tutorial mysql > MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL

MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL

黄舟
Lepaskan: 2017-02-16 13:24:45
asal
1295 orang telah melayarinya

-- MySQL分组排序取前N条记录的最简洁的单条sql。


USE test;


DROP TABLE IF EXISTS test;

CREATE TABLE test (
  id INT PRIMARY KEY,
  cid INT,
  author VARCHAR(30)
) ENGINE=MYISAM;
Salin selepas log masuk
INSERT INTO test VALUES  
(1,1,'test1'),
(2,1,'test1'),
(3,1,'test2'),
(4,1,'test2'),
(5,1,'test2'),
(6,1,'test3'),
(7,1,'test3'),
(8,1,'test3'),
(9,1,'test3'),
(10,2,'test11'),
(11,2,'test11'),
(12,2,'test22'),
(13,2,'test22'),
(14,2,'test22'),
(15,2,'test33'),
(16,2,'test33'),
(17,2,'test33'),
(18,2,'test33');
Salin selepas log masuk

INSERT INTO test VALUES (200,200,'200test_nagios');




SELECT * FROM (SELECT cid,author,COUNT(*) AS number FROM test GROUP BY cid,author) a 
WHERE  
N
>(
    SELECT COUNT(*) 
    FROM (SELECT cid,author,COUNT(*) AS number FROM test GROUP BY cid,author) b
    WHERE a.cid=b.cid AND a.number<b.number
)ORDER BY cid,number DESC;
Salin selepas log masuk


结果如下:


mysql> SELECT * FROM (SELECT cid,author,COUNT(*) AS number FROM test GROUP BY cid,author) a 
    -> WHERE  
    -> 3>(
    ->     SELECT COUNT(*) 
    ->     FROM (SELECT cid,author,COUNT(*) AS number FROM test GROUP BY cid,author) b
    ->     WHERE a.cid=b.cid AND a.number<b.number
    -> )ORDER BY cid,number DESC;
+------+----------------+--------+
| cid  | author         | number |
+------+----------------+--------+
|    1 | test3          |      4 |
|    1 | test2          |      3 |
|    1 | test1          |      2 |
|    2 | test33         |      4 |
|    2 | test22         |      3 |
|    2 | test11         |      2 |
|  200 | 200test_nagios |      1 |
+------+----------------+--------+
7 rows in set (0.00 sec)
Salin selepas log masuk



N就是取分组之后的最前面几个判断,N=3就是取前3个





-- 生成自动数字序列

SET @ROW=0;
SELECT a.*,(@ROW:=@ROW +1)Rank
FROM test a;
Salin selepas log masuk

 以上就是MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan