Chinookテスト データベースを使用して、Sqlite3 と MySQL5 のクエリ結果を比較しています。
次のクエリがこれら 2 つのデータベースで異なる結果を返す理由と、MySQL が新しい InvoiceId を作成する理由を教えてください。
SELECT * FROM invoice WHERE InvoiceDate > (SELECT AVG(InvoiceDate) FROM invoice) LIMIT 3
結果の順序は指定されていません。したがって、どれが「最初の 3 つ」であるかも不明です。
サブセレクトを使用しなかったときに両方のエンジンで同じ順序を取得したからといって、それらが常に同じになるとは限りません。
これを試して:
SELECT * FROM 請求書 WHERE InvoiceDate > (SELECT AVG(InvoiceDate) FROM 請求書) ORDER BY InvoiceId ASC LIMIT 3
MySQL は新しい請求書 ID を作成していません。単に結果セットを並べ替えていません。