Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

黄舟
Freigeben: 2017-02-16 13:24:45
Original
1161 Leute haben es durchsucht

--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;
Nach dem Login kopieren
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');
Nach dem Login kopieren

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;
Nach dem Login kopieren


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)
Nach dem Login kopieren



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;
Nach dem Login kopieren

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 (m.sbmmt.com)!


Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!