你会说假设
返回的输出是安全的 select * from table1;
将以与输出相同的方式排序:
select * from table1 where table1.a<0;
其中a是table1的一些随机属性?
谢谢!
答案 0 :(得分:1)
如果您的意思是列,那么我在SSMS中编辑表时从未看到它与订单的不同,但我不确定这是否是一个严格的规则。
行没有固有的顺序。如果没有排序,则不能保证完全相同的查询每次都以相同的顺序返回行。
这将是相同的
select * from table1
order by table1.PK;
select * from table1 where table1.a<0
order by table1.PK;
即使是具有群集PK的表也不能保证在没有order by子句
的情况下以该顺序返回行这必须是双重的。我会寻找一个并删除。
答案 1 :(得分:0)
列的顺序是在数据库模式中定义的,因此您应该将select *
中返回的列序列视为相同(为了更改列序列,在模式中有更改此值的特定命令,是alter table的变体)
行号的顺序..如果你想确定所选行的特定顺序,你必须使用order by子句明确设置
select * from your_table
order by your_column