这是名为commonprofit的表:
name date turnover
1 2011/12 42359
1 2010/12 32863
1 2009/12 24293
1 2008/12 16436
1 2007/12 15442
2 2011/12 91634
2 2010/12 58410
2 2009/12 50668
2 2008/12 54297
3 2009/12 12352
3 2008/12 12352
3 2007/12 14226
select name,max(date) as date, turnover from commonprofit group by name
union
select name,min(date) as date,turnover from commonprofit group by name;
结果是
name|date|turnover
00001|2007/12|15442
00001|2011/12|42359
00002|2008/12|54297
00002|2011/12|91634
00003|2007/12|14226
00003|2009/12|12352
为什么结果不是以下内容:
name|date|turnover
00001|2011/12|42359
00002|2011/12|91634
00003|2009/12|12352
00001|2007/12|15442
00002|2008/12|54297
00003|2007/12|14226
我想知道在sqlite查询中序列不是我想要的原因吗?
答案 0 :(得分:0)
如果您需要特定订单,则必须提供order by
条款。如,
select o, name, date, turnover from
(
select 'x' as o, name, max(date) as date, turnover from commonprofit group by name
union
select 'n' as o, name, min(date) as date, turnover from commonprofit group by name
)
order by o desc, name;
x|1|2011/12|42359
x|2|2011/12|91634
x|3|2009/12|12352
n|1|2007/12|15442
n|2|2008/12|54297
n|3|2007/12|14226
答案 1 :(得分:0)
原因是UNION
删除了子查询中重复的记录。
为了更容易找到重复项,SQLite对结果进行排序。
要避免此步骤,请使用UNION ALL
代替UNION
。
(这意味着,如果name
只有一个date
,则会出现两次。)