我不知道如何准确描述问题标题,但你可以想象流动: 我有一张桌子,我想选择不同的数据
A B C
Cat 10 False
Dog 25 True
Dog 20 False
Cat 5 False
当我对A列使用group by时,结果将是:
A B C
Cat 5 False
Dog 20 False
是否有可能在MySQL中生成这样的结果:
A B C
Cat 10 False
5 False
Dog 25 True
20 False
或任何建议该表返回一个如下数组:
Array(
[Cat]=>Array(
[0]=> Array(
[0]=>10
[1]=>False
)
[1]=> Array(
[0]=>5
[1]=>False
)
)
[Dog]=>Array(
[0]=> Array(
[0]=>25
[1]=>True
)
[1]=> Array(
[0]=>20
[1]=>False
)
)
)
答案 0 :(得分:2)
如果下一行列值与上一行列值匹配,则必须记住上一行值,以便在下一行中不再显示它。
示例:
select
case when @prev != ( @curr := A ) then ( @prev := @curr ) else '' end as A
, B, C
from(
select * from tbl_soq24465988
order by 1 asc, 2 desc
) sorted_table
, ( select @prev := '', @curr := '' ) initializer
;
输出:
+------+------+-------+
| A | B | C |
+------+------+-------+
| Cat | 10 | False |
| | 5 | False |
| Dog | 25 | True |
| | 20 | False |
+------+------+-------+