如果所有记录的订单字段值相同怎么办?

时间:2015-04-23 06:26:48

标签: oracle sql-order-by

全部,让我们说SQL如下所示。

Select a, b ,c from table1 order by c

如果table1中的所有行在字段c中具有相同的字段值。我想知道每次执行SQL时结果是否具有相同的顺序。

我们假设table1中的数据如下所示。

a              b                 c 
-------------------------------------------
1              x1                 2014-4-1
....
100            x100               2014-4-1 
....
1000           x1000              2014-4-1
....

Oracle如何按值确定相同订单的行序列?

它们每次都是随机序列吗?

2 个答案:

答案 0 :(得分:4)

一个简单的答案是无保证 相等值上的- (void)buttonPressed:(id)sender { NewViewController *newVC = [NewViewController new]; [self presentViewController:newVC animated:YES completion:nil]; } 每次都会返回相同的排序结果。在你看来它总是稳定的,然而,有很多原因可以改变它。

例如,对相等值的排序可能会推迟:

  1. 收集统计数据
  2. 在列上添加索引
  3. 例如,

    我们说我有一张桌子:

    ORDER BY

    具有相似值的列的排序就像:

    SQL> SELECT * FROM t ORDER BY b;
    
             A          B
    ---------- ----------
             1          1
             2          1
             3          2
             4          2
             5          3
             6          3
    
    6 rows selected.
    

    因此,表格中的类似数据,但SQL> CREATE TABLE t1 AS SELECT * FROM t ORDER BY b, DBMS_RANDOM.VALUE; Table created. SQL> SELECT * FROM t1 ORDER BY b; A B ---------- ---------- 1 1 2 1 4 2 3 2 5 3 6 3 6 rows selected. 列上的值相等,不能保证相同的排序。

答案 1 :(得分:0)

它们不能是随机的(每次更改),但订单不保证(有时会更改)。