在Oracle中,如果未指定"order by"子句,则select查询的行的缺省排序是什么.
是吗
我读过很多SQL代码,似乎开发人员假定默认排序顺序始终存在.例如,在构建HTML选择列表时,他们只会SELECT id, name FROM table发布一个ORDER BY子句.
根据我自己的经验,似乎dbms ORDER BY总是使用FIFO命令数据,如果没有给出子句而没有索引.但是,订单无法保证.但是,如果表没有变化,我从未见过dbms重新排序数据.
如果表没有变化,您是否曾经历过以非确定性顺序选择数据的dbms?
始终放置ORDER BY子句是最佳做法吗?
对于所有DBA来说,这是一个基本的简单问题.
当我选择时,是否始终保证我的结果将由主键排序,或者我应该用'order by'指定它?
我正在使用Oracle作为我的数据库.
直到最近我每天开始使用它时,我才很少使用SQL.我注意到如果没有使用"order by"子句:
这种行为是最常见的数据库(MySql,Oracle,PostgreSQL,Sqlite,Sql Server)中可以依赖的标准事物吗?(我甚至不知道是否可以在sqlite中真正依赖它).如果是这样的话,它是多么严格(例如,如果一个人使用"分组依据",各个团体是否都有这种排序)?
在Mysql中,当你执行一个select SQL语句时,如果你不包含一个排序子句,有一个默认排序,如何反转默认排序?刚添加DESC?
在PHP中,我创建并执行如下所示的SQL查询.
INSERT INTO Table (Column1, Column2, Column3) VALUES
('1', '2', '3'),
('A', 'B', 'C'),
('AA', 'BB', 'CC');
但是,每次尝试时,它们插入数据库的顺序都不同.有没有办法可以确保按照列出的顺序插入它们?
另外:谢谢大家的帮助.我已经使用PHP从CSV文件创建MySQL表一段时间了.在过去,我总是使用创建一个表并一次性插入所有行.在这些情况下,SQL表始终与我的INSERT查询具有相同的顺序.但是,现在我正在创建一个MySQL,然后逐渐添加内容.这是数据库顺序随机变化的时候.
我已经通过使用ALTER TABLE ... ORDER BY查询克服了这个问题,但我很好奇,因为在第一种情况下有顺序,现在它似乎非常随机.
我注意到,当写入插入表变量的sproc值时,插入的顺序与插入顺序不同.有没有办法禁用此自动排序而不添加另一列进行排序?想到的想法是创建自动索引或一些整理设置......任何想法?
访问http://sqlfiddle.com/#!3/e1c06/13,看看我的意思
declare @tmpTbl table (name varchar(100))
insert into @tmpTbl
select 'mark'
union
select 'frank'
union
select 'sharon'
union
select 'jason'
select * from @tmpTbl
Run Code Online (Sandbox Code Playgroud) 如果将项目插入表中,然后我编写一个查询,例如select * from table,为什么结果不符合我的预期?
是否可以在表格顶部插入记录?目前,通过使用以下内容,它将在最后一行之后插入.
$sql = "INSERT INTO `table` (`text1`,`text2`,`text3`) VALUES ('$text1','$text2','$text3')";
if ($conn->query($sql) === TRUE) {
echo 'The auto ID is: '. $conn->insert_id;
}
else {
echo 'Error: '. $conn->error;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有下表
DBName Server Status UpdateTime
DB1 server1 NULL 5/4/2019
DB1 server1 NULL NULL
DB2 server2 NULL 6/4/2019
DB2 server2 NULL 6/4/2019
DB3 server2 NULL NULL
DB3 server2 NULL NULL
Run Code Online (Sandbox Code Playgroud)
有时,当我单击选择行时,它会以某种方式重新排列一些随机行。另外,如果单击“编辑”,我会注意到行已重新排列。为什么会这样呢?
DBName Server Status UpdateTime
DB1 server1 NULL 5/4/2019
DB2 server2 NULL 6/4/2019
DB3 server2 NULL NULL
DB3 server2 NULL NULL
DB2 server2 NULL 6/4/2019
DB1 server1 NULL NULL
Run Code Online (Sandbox Code Playgroud)
我的意思是,这实际上并不会引起问题,但是我有3个环境,当行的顺序不同时,很难跨环境比较结果。
起初,它是在我在家远程工作时发生的。所以我认为可能是VPN /网络问题。但是即使在办公室,它也发生了,我没有连接到VPN。
编辑:
这与这个问题不同,因为我没有主键
sql ×6
mysql ×5
sql-server ×4
oracle ×3
sql-order-by ×3
database ×2
php ×2
postgresql ×2
sqlite ×2
mysqli ×1
primary-key ×1
rdbms ×1
sorting ×1
t-sql ×1