2016-06-17 112 views
-1

你會說這是安全的假設由SQL輸出順序

select * from table1; 

返回的輸出會以同樣的方式來訂購的輸出:

select * from table1 where table1.a<0; 

其中a是一些隨機屬性table1的?

謝謝!

+0

我沒有看到explicitally設置所選行,以確保特定順序的爲什麼不是 –

+2

它可能取決於您的DBMS軟件(SQL Server,MySQL等) - 但通常沒有訂單保證d。 – Nicarus

+2

沒有訂單是保證,除非它明確指定,但它絕對取決於DBMS – shamsup

回答

1

如果你指的是列,那麼我從來沒有看到它與SSMS中編輯表的順序不同,但我不確定這是否是一條硬性規則。

行沒有固有的順序。在沒有排序的情況下,完全相同的查詢不保證每次都以相同的順序返回行。

這將是相同的

select * from table1 
order by table1.PK; 

select * from table1 where table1.a<0 
order by table1.PK; 

即使一個表羣集PK不能保證的順序沒有ORDER BY子句

這必須是一個DUP返回行。我會尋找一個並刪除。

0

列的順序是在數據庫模式中定義的,因此您應該考慮select *中列的返回順序總是相同(對於更改列順序,有特定的命令可以在模式中更改此值,是alter的變體表)

行的順序號。如果你想結果爲您必須使用ORDER BY子句

select * from your_table 
order by your_column