Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用Chinook测试数据库来比较 Sqlite3 和 MySQL5 的查询结果。
谁能告诉我为什么下面的查询在这两个数据库中给出不同的结果,为什么 MySQL 会创建一个新的 InvoiceId?
SELECT * FROM invoice WHERE InvoiceDate > (SELECT AVG(InvoiceDate) FROM invoice) LIMIT 3
结果的顺序未指定;因此,它们中的“前三个”也未指定。
仅仅因为当你不使用子选择时你在两个引擎上得到了相同的顺序,这并不意味着它们总是相同的。
尝试这个:
SELECT * FROM invoice WHERE InvoiceDate > (SELECT AVG(InvoiceDate) FROM invoice) ORDER BY InvoiceId ASC LIMIT 3
MySQL 没有创建新的发票 ID,它只是没有对结果集进行排序。