2016-06-17 73 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