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)中这样做了,但它不起作用。为了我。它显示所有记录,如选择查询结果集。你能帮我一下吗。