`
jedy
  • 浏览: 149921 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

查询返回的默认顺序

SQL 
阅读更多

按照sql标准,select如果不加order by子句,返回结果的顺序是不可靠的。

如果你希望保证顺序,必须要加上order by子句。

见下面的例子:

innodb的情况

test@127.0.0.1>CREATE TABLE t (
-> ID INT NOT NULL PRIMARY KEY,
-> PID INT,
-> FOREIGN KEY (PID) REFERENCES t(ID)
-> ) ENGINE=INNODB;
Query OK, 0 rows affected (0.06 sec)

test@127.0.0.1>INSERT INTO t VALUES (1, NULL);
Query OK, 1 row affected (0.00 sec)

test@127.0.0.1>INSERT INTO t VALUES (2, NULL);
Query OK, 1 row affected (0.00 sec)

test@127.0.0.1>select * from t;
+----+------+
| ID | PID |
+----+------+
| 1 | NULL |
| 2 | NULL |
+----+------+
2 rows in set (0.00 sec)

test@127.0.0.1>UPDATE t SET PID = 2 WHERE ID = 1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0

test@127.0.0.1>select * from t;
+----+------+
| ID | PID |
+----+------+
| 2 | NULL |
| 1 | 2 |
+----+------+
2 rows in set (0.00 sec)


myisam的情况

test@127.0.0.1>create table t (a int primary key, b int) engine=myisam;
Query OK, 0 rows affected (0.00 sec)

test@127.0.0.1>insert into t values (1,2),(2,3),(3,4);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

test@127.0.0.1>delete from t where a = 2;
Query OK, 1 row affected (0.00 sec)

test@127.0.0.1>insert into t values (4,5);
Query OK, 1 row affected (0.00 sec)

test@127.0.0.1>select * from t;
+---+------+
| a | b |
+---+------+
| 1 | 2 |
| 4 | 5 |
| 3 | 4 |
+---+------+
3 rows in set (0.00 sec)
分享到:
评论

相关推荐

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    然而,Oracle并没有保证按照`IN`列表中的顺序返回匹配的行。这意味着如果你期望`IN`列表内的值按照特定顺序输出,必须明确指定`ORDER BY`子句,将`IN`条件中的列作为排序依据。 在实际操作中,查看执行计划有助于...

    详解 Mysql查询结果顺序按 in() 中ID 的顺序排列

    当我们结合`IN()`与`ORDER BY`子句时,特别是使用`FIELD()`函数,我们可以控制查询结果按照`IN()`列表中的顺序进行排序。`FIELD()`函数在MySQL中是一个特殊函数,它返回指定值在提供的列表中出现的位置,如果值不...

    PHP 默认目录 apache默认目录 apache默认页面

    在Apache的配置中,`DirectoryIndex`指令定义了这些默认页面的顺序。如果`index.html`存在,它将首先被显示;如果不存在,Apache会尝试其他列出的文件,如`index.php`。 在这个给定的压缩包中,我们看到以下几个...

    数据结构c++代码(顺序表的代码,包括静态顺序表和动态顺序表)

    1. **初始化**:创建一个空的顺序表,可能需要初始化一个默认大小的数组或一个空的`std::vector`。 2. **插入操作**:在指定位置插入一个元素,需要检查当前容量是否足够,如果不够,则需要扩容。对于静态顺序表,这...

    数据结构 顺序栈

    1. **栈的初始化**:通常通过构造函数完成,设定一个初始容量,如默认为10。 2. **栈顶指针**:用于跟踪栈顶元素的位置,初始时指向数组的第一个元素。 3. **压栈操作**:在栈未满的情况下,将元素添加到栈顶,然后...

    顺序表C++头文件和测试代码

    8. **容量操作**:如`capacity()`,返回顺序表的容量。 9. **遍历操作**:如`print()`,打印顺序表的所有元素。 源文件中,上述成员函数会被具体实现,涉及C++的动态内存管理(如`new`和`delete`)、数组操作和...

    SELECT语句执行顺序

    了解SELECT语句的执行顺序对于编写高效、正确的SQL查询至关重要。本文将详细介绍SELECT语句各部分的执行顺序,并通过具体示例加深理解。 #### SELECT语句的基本结构 SELECT语句的基本结构如下: ```sql SELECT ...

    用C++实现顺序表的基本操作

    如果找到该元素,则返回其在顺序表中的位置(从1开始计数);否则返回0。 5. **Insert(int i, Tx)** - 在位置`i`处插入元素`x`。如果列表已满,则调用`reSize()`增加容量。如果插入位置超出范围,则返回`false`;...

    angular 默认排序问题

    这个表达式可以是属性名、函数或者是任何能够返回一个用于比较的值的表达式。 例如,如果你有一个对象数组,每个对象都有`name`属性,你可以这样进行排序: ```html | orderBy: 'name'">{{item.name}} ``` 这...

    顺序表表示集合,实现集合的交、并、差运算

    - **LocateElem(L, e)**:查找元素e在顺序表L中的位置,如果不存在则返回0。 - **ListDelete(A, i)**:删除顺序表A中下标为i的元素。 ### 三、程序流程解析 1. **初始化集合A、B、C、D**: - 用户输入集合A和集合...

    顺序表的实现

    - **获取顺序表长度** `int Length()` 返回当前顺序表的长度。 - **获取指定位置的元素** `DataType GetA(int i)` 返回顺序表中索引为`i`的元素。 - **查找特定元素的位置** `int Locate(DataType x)` 查找值为`x`的...

    易语言管理多台打印机的默认机选择

    在易语言中,可以创建和打开事件同步对象来协调不同线程的执行顺序,确保数据的一致性和安全性。例如,当需要改变默认打印机时,可能有多个线程同时尝试修改,此时就需要事件同步来避免竞态条件。 管理多台打印机的...

    顺序表基本运算的类实现

    - **查找元素**:`find(int value)`,返回元素首次出现的位置,如果没有找到返回-1。 ```cpp int find(int value) { for (int i = 0; i ; i++) if (elements[i] == value) return i; return -1; } ``` -...

    运用注解改变反射之后类属性的顺序

    默认情况下,Java反射API(如`Field[] getDeclaredFields()`方法)返回的字段数组顺序与它们在源代码中的声明顺序一致。在某些场景下,如序列化或JSON转换,我们可能需要控制这些属性的顺序。 为了解决这个问题,...

    MFC线性表顺序存储

    - CArray内部有一个增长因子(growth factor),默认为50%,当数组满时,会自动创建一个新数组并复制原有元素,新数组的大小通常是原大小的1.5倍。 - 这种动态扩展机制保证了插入元素的效率,但也可能导致内存碎片...

    onTouchEvent 、onInterceptTouchEvent的顺序~

    本文将深入探讨这两个方法的使用、顺序以及它们在Android事件分发机制中的角色。 首先,我们要了解Android的事件分发链。当用户在屏幕上触摸时,系统会生成一个`MotionEvent`对象,然后通过层次结构从顶级父视图到...

    ABP VNext种子数据按顺序生成

    在这个场景中,"ABP VNext种子数据按顺序生成"是指在项目初始化时,根据特定顺序创建和填充数据库的初始数据,这些数据通常用于设置系统的默认配置、角色、用户和其他必须的数据。 在ABP VNext中,种子数据的生成...

    Spring+SpringMVC配置加载顺序1

    Spring 和 SpringMVC 的配置加载顺序是理解这两个框架协同工作的重要方面。首先,DispatcherServlet 是 SpringMVC 的核心组件,它扮演着请求分发者的角色,确保请求被正确地路由到相应的处理器。DispatcherServlet ...

Global site tag (gtag.js) - Google Analytics