1

我正在使用Chinook测试数据库来比较 Sqlite3 和 MySQL5 的查询结果。

谁能告诉我为什么下面的查询在这两个数据库中给出不同的结果,为什么 MySQL 会创建一个新的 InvoiceId?

SELECT * FROM invoice WHERE InvoiceDate > (SELECT AVG(InvoiceDate) FROM invoice) LIMIT 3

在此处输入图像描述


附录:

在此处输入图像描述

4

2 回答 2

2

结果的顺序未指定;因此,它们中的“前三个”也未指定。

仅仅因为当你不使用子选择时你在两个引擎上得到了相同的顺序,这并不意味着它们总是相同的。

于 2012-06-15T23:36:59.950 回答
0

尝试这个:

SELECT * FROM invoice WHERE InvoiceDate > (SELECT AVG(InvoiceDate) FROM invoice) ORDER BY InvoiceId ASC LIMIT 3

MySQL 没有创建新的发票 ID,它只是没有对结果集进行排序。

于 2012-06-15T23:37:44.207 回答