Mysql 分組排序

需求:ios

   按照cid、author分組,再按照id倒敘,取出test表中前2條記錄出來。spa

  建表以及初始數據以下:code

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

解答:blog

   

SELECT
    id,
    cid,
    author
FROM
    (
        SELECT
            a.id,
            a.cid,
            a.author,
            CASE
        WHEN a.cid =@cid
        AND a.author =@aut THEN
            @x :=@x + 1
        ELSE
            @x := 1
        END AS 'tmp' ,@cid := a.cid ,@aut := a.author,
        @x AS r
    FROM
        test a,
        (
            SELECT
                @x := 1 ,@cid := '' ,@aut := ''
        ) b
    ORDER BY     a.cid,a.author
    ) tmp
WHERE  r <= 2
相關文章
相關標籤/搜索