我有一个带有5列的表格,
column1, column2, column3, column4, column5
of which column1, column2 and column3 constitute 'primary key'
temp_table
Column1 Column2 Column3 Column4 Column5
2 209 Raj Kumar K
2 27 Arvind Ram R
2 227 Mahesh Kumar M
每当我查询表时,即使我不在查询中下达订单,结果也将由主键列订购。
Select Column1, Column2, Column3 from temp_table;
每次我运行此查询时,我都会得到结果,
Column1 Column2 Column3
2 27 Arvind
2 209 Raj
2 227 Mahesh
,但仅在一个特定的实例中,查询结果不是由主键列订购的。
结果如下,
Column1 Column2 Column3
2 209 Raj
2 27 Arvind
2 227 Mahesh
有人可以帮助找到原因。
即使我不在查询中下达订单
如果您期望在结果集中有可重现和确定性的订购,则应始终使用ORDER BY
子句。您不应在SQL表中假设任何固有的顺序,因为在(无序)集后对表进行了建模。关于为什么在一个实例中更改订单的原因,也许在该实例中存储或可能被缓存的基础数据的方式有所不同。但是无论如何,如果您期望某个订单,请始终使用ORDER BY
。
您必须使用ORDER BY
喜欢:
Select Column1, Column2, Column3
from temp_table
order by Column?;
并选择所需的列。您最终也可以使用DESC
和ASC
,例如:
Select Column1, Column2, Column3
from temp_table
order by Column? ASC;
用于减少或增加的坐标。