我不认为这是可能的,但我想证明不是这样。
我写了一个简单的报表查看类,用来输出各种数据库查询的结果。为了改进显示,当我有一个包含分组数据的报告时,我想仅在每个唯一值的第一行显示字段值 - 我想在查询级别执行此操作,否则它会在我的类中需要额外的逻辑来确定这些特殊值。
用一个简单的例子可能有助于说明我的要求。想象一下这个数据集:
Year Quarter Total
2008 Q1 20
2008 Q2 25
2008 Q3 35
2008 Q4 40
2009 Q1 15
2009 Q2 20
2009 Q3 30
2009 Q4 35
如果可能,我希望数据集返回为:
Year Quarter Total
2008 Q1 20
Q2 25
Q3 35
Q4 40
2009 Q1 15
Q2 20
Q3 30
Q4 35
有没有办法在 MySQL 中以编程方式执行此操作?
最佳答案
SELECT CASE WHEN @r = year THEN NULL ELSE year END AS year,
quarter,
total,
@r := year
FROM (
SELECT @r := 0
) vars,
mytable
ORDER BY
year
@r
这里是一个 session 变量。您可以在 MySQL
中使用它们,就像在任何过程语言中使用任何变量一样。
首先,它在子查询中被初始化为零。
其次,它在 SELECT
子句中被选中。如果@r
的当前值不等于year
,则输出year
,否则为NULL
输出。
第三,它更新为 year
的当前值。
关于sql - MySQL - 仅在每个分组值的第一个实例中显示字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916000/