我有一个数据库:
Serial no. Name
1 A
1 B
2 Aa
2 Z
3 D
3 A
3 C
我希望结果是
Serial no. Name
2 Aa
2 Z
1 A
1 B
3 D
3 A
3 C
我希望每个组(具有相同的序列号)与其他组一起根据组中的名字进行排序,但在组中名称的顺序应保持不变。
我试过了
Select * From tablename
group by `Serial no.`
order by `Name`
但我得到了:
Serial no. Name
2 Aa
1 A
3 D
3条答案
按热度按时间xxslljrj1#
这是表中的数据:
这是我为以下查询获得的输出:
a1o7rhls2#
在你的table上分组一点意义都没有。点菜就行了。
oxiaedzo3#
用sql做你想做的事是不可能的。
您希望每个序列号组中的顺序与表中的顺序相同,但表中没有定义良好的顺序。
sql中的表是一组无序的行,任何顺序都必须由
ORDER BY
条款。因此,除非您的顺序可以用sql表示,并且不依赖于表中行的物理位置,否则您的问题就无法解决。表中的行顺序可以更改,并且依赖于实现。例如,重组可能会改变它。例如,在postgresql中,一个简单的更新会改变顺序,甚至不能保证在两次连续扫描中获得相同的顺序。