Mysql 如何获得类似Oracle滞后函数的结果集

Mysql 如何获得类似Oracle滞后函数的结果集,mysql,select,Mysql,Select,我有一个mysql表,它的结构如下 | ColA | ColB | ColC | +------------------ +------+ | A | xxx | 40 | | A | YYY | 40 | | A | zzz | 40 | | B | ABC | 50 | | B | BCA | 50 | | C | TTT |

我有一个
mysql
表,它的结构如下

| ColA    | ColB    | ColC |
+------------------ +------+
| A       | xxx     |    40 |
| A       | YYY     |    40 |
| A       | zzz     |    40 |
| B       | ABC     |    50 |
| B       | BCA     |    50 |
| C       | TTT     |    60 |
| C       | FFF     |    60 |
我需要输出如下

| ColA    | ColB    | ColC |
+------------------ +------+
| A       | xxx     |    40 |
|         | YYY     |       |
|         | zzz     |       |
| B       | ABC     |    50 |
|         | BCA     |       |
| C       | TTT     |    60 |
|         | FFF     |       |
通过谷歌搜索,我得到了
Group\u Concat
函数

但它会在同一列中给出类似xxx、yyy、zzz的值

如何实现上述格式?


请帮助我。

< P> >,请考虑以下……/P>
DROP TABLE IF EXISTS abc;

CREATE TABLE abc
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,ColA CHAR(1) NOT NULL
,ColB CHAR(3) NOT NULL   
,ColC INT NOT NULL
);

INSERT INTO abc (ColA,ColB,ColC) VALUES
('A','xxx',40),
('A','YYY',40),
('A','zzz',40),
('B','ABC',50),
('B','BCA',50),
('C','TTT',60),
('C','FFF',60);

SELECT * FROM abc;
+----+------+------+------+
| id | ColA | ColB | ColC |
+----+------+------+------+
|  1 | A    | xxx  |   40 |
|  2 | A    | YYY  |   40 |
|  3 | A    | zzz  |   40 |
|  4 | B    | ABC  |   50 |
|  5 | B    | BCA  |   50 |
|  6 | C    | TTT  |   60 |
|  7 | C    | FFF  |   60 |
+----+------+------+------+

SELECT id,a,b,c
  FROM (
  SELECT id
     , CASE WHEN ColA = @prev_a 
            THEN @curr_a:= '' 
            ELSE @curr_a := ColA END a
     , @prev_a := ColA

     , CASE WHEN ColB = @prev_b 
        THEN @curr_b:= '' 
            ELSE @curr_b := ColB END b
     , @prev_b := ColB

     , CASE WHEN ColC = @prev_c 
            THEN @curr_c:= '' 
            ELSE @curr_c := ColC END c
     , @prev_c := ColC
  FROM abc
     , (SELECT @curr_a = ''
             , @prev_a = ''
             , @curr_b = ''
     , @prev_b = ''
             , @curr_c = ''
     , @prev_c = ''
             ) vars 
 ORDER 
    BY id
    ) x ORDER BY id;
+----+------+------+------+
| id | a    | b    | c    |
+----+------+------+------+
|  1 | A    | xxx  | 40   |
|  2 |      | YYY  |      |
|  3 |      | zzz  |      |
|  4 | B    | ABC  | 50   |
|  5 |      | BCA  |      |
|  6 | C    | TTT  | 60   |
|  7 |      | FFF  |      |
+----+------+------+------+

我应该提到,这假设排序规则匹配(例如,SET NAMES utf8;)

您不能。mysql只返回每行具有相同列数的行。@GrijeshChauhan我需要一个查询来显示具有上述列数的表行format@VazhgaValamudan为什么不在应用层处理它?对你来说不可能?@VolkanUlukut好吧,你可以-但我不确定你是否愿意@草莓你怎么能?我非常想学习如何使用,即使我不打算使用。这就是我要寻找的。。超级季。。超级季…-)我试过这个。但这对我不起作用。请帮助我在我的本地环境(phpMyAdmin3.4.5,mysql版本5.5.16)中这样做了,但它不起作用。为了我。它显示所有记录,如选择查询结果集。你能帮我一下吗。