Heim  >  Artikel  >  Datenbank  >  MySQL-Gruppensortierung, um die ersten N Datensätze zu erhalten und automatisches Zahlenfolge-SQL zu generieren

MySQL-Gruppensortierung, um die ersten N Datensätze zu erhalten und automatisches Zahlenfolge-SQL zu generieren

黄舟
黄舟Original
2017-02-16 13:24:451200Durchsuche

--Bei der MySQL-Gruppensortierung wird das einfachste Einzel-SQL der ersten N Datensätze verwendet.


USE test;


DROP TABLE IF EXISTS test;

CREATE TABLE test (
  id INT PRIMARY KEY,
  cid INT,
  author VARCHAR(30)
) ENGINE=MYISAM;
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');

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;


Die Ergebnisse sind wie folgt:


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)



N bedeutet, die ersten paar Urteile nach der Gruppierung zu treffen, N=3 ist um die ersten 3 zu nehmen





-- Automatische Zahlenfolge generieren

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

Das Obige ist der SQL-Inhalt der MySQL-Gruppensortierung, um die ersten N Datensätze zu erhalten und eine automatische Zahlenfolge zu generieren. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn