SQL中的顺序和组

时间:2018-05-24 12:45:26

标签: mysql sql sql-order-by

我有一个数据库:

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 个答案:

答案 0 :(得分:0)

这是表中的数据:

SELECT * FROM #temp

enter image description here

Select *
from tablename
Order by Serial no DESC, Name;

这是我为以下查询获得的输出:

enter image description here

答案 1 :(得分:0)

在桌面上分组根本没有意义。订购会很好。

select Serialno,Name
from table _name
order by Name desc

答案 2 :(得分:0)

用SQL做你想做的事是不可能的。

您希望每个序列号组中的订单与表格中的订单相同,但表格中没有明确定义的订单。

SQL中的表是一组无序行,任何顺序都必须由ORDER BY子句强加。因此,除非您的订单可以用SQL表示,并且不依赖于表中行的物理位置,否则您的问题无法解决。

表中行的顺序可以更改,并且取决于实现。例如,重组可能会改变它。例如,在PostgreSQL中,一个简单的更新会改变顺序,甚至不能保证在两次连续扫描中获得相同的顺序。