MySQLでチャンクごとに大きな選択を取得しますか?
チャンクによる大きな選択を取得するには、ORDERBYLIMITを使用する必要があります。構文は次のとおりです。
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 0,10;
上記の構文から、テーブルから10行を取得します。上記の構文で、0は、テーブルの結果セットの最初の行を表します。これは、ゼロインデックスベースであることを意味します。 LIMITの2番目の値は、テーブルから取得できる行の最大数を表します。
10から30の後に次の行が必要な場合は、このようにLIMITで使用します。構文は次のとおりです。
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 10,20; //11 to 30
30から50までの別の行のセットが必要な場合は、もう一度LIMITを使用します:
SELECT *FROM yourTableName ORDER BY yourColumnName LIMIT 30 ,20; 31 to 50.
これには一時テーブルを使用する必要があります。構文は次のとおりです。
DROP TEMPORARY TABLE IF EXISTS yourTemporaryTableName; CREATE TEMPORARY TABLE yourTempTableName AS ( SELECT *FROM yourOriginalTableName ORDER BY LIMIT 0,100 );
すべてのレコードが一時テーブルにある場合は、上記のようにLIMITを使用して一時テーブルからすべてのレコードを取得します。
SELECT *FROM yourTemporaryTableName LIMIT 0,100; SELECT *FROM yourTemporaryTableName LIMIT 100,1000;
さて、制限値を設定するのはあなた次第です。一時テーブルを削除することをお勧めします。クエリは次のとおりです。
DROP TEMPORARY TABLE yourTemporaryTableName;
上記の議論のデモを見てみましょう。まず、テーブルを作成します。テーブルを作成するためのクエリは次のとおりです。
mysql> create table getRecordsDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (1.68 sec)
挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです。
mysql> insert into getRecordsDemo values(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(); Query OK, 738 rows affected (0.34 sec) Records: 738 Duplicates: 0 Warnings: 0
次に、上記のテーブルのような一時テーブルを作成します。一時テーブルを作成するためのクエリは次のとおりです。
mysql> drop temporary table if exists TempRecord; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> create temporary table TempRecord -> as -> ( -> select * from getRecordsDemo order by Id limit 0,738 -> ); Query OK, 738 rows affected (0.03 sec) Records: 738 Duplicates: 0 Warnings: 0
これで、LIMIT句を使用して結果をチャンクで取得できます。
ケース1 :一時テーブル「TempRecord」からいくつかのレコードを取得するためのクエリは次のとおりです:
mysql> select *from TempRecord limit 0,10;
出力は次のとおりです。
+----+ | Id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +----+ 10 rows in set (0.00 sec)
ケース2 :次のレコードセットを取得するためのクエリは次のとおりです:
mysql> select *from TempRecord limit 10,20; +----+ | Id | +----+ | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 | | 23 | | 24 | | 25 | | 26 | | 27 | | 28 | | 29 | | 30 | +----+ 20 rows in set (0.00 sec)
ケース3 :別のレコードセットを取得するためのクエリは次のとおりです:
mysql> select *from TempRecord limit 30,20; +----+ | Id | +----+ | 31 | | 32 | | 33 | | 34 | | 35 | | 36 | | 37 | | 38 | | 39 | | 40 | | 41 | | 42 | | 43 | | 44 | | 45 | | 46 | | 47 | | 48 | | 49 | | 50 | +----+ 20 rows in set (0.00 sec)
-
MySQLのデータベースからテーブル名を取得するにはどうすればよいですか?
MySQLのデータベースからテーブル名を取得するための構文は、次のとおりです- show tables from yourDatabaseName; MySQLのデータベースからテーブル名を取得するために上記のクエリを実装しましょう- mysql> show tables from hb_student_tracker; これにより、次の出力が生成されます- +------------------------------+ | Tables_in_hb_student_tracker | +------------------------------+ | demotable192
-
月に基づいてMySQLテーブルから合計を選択します
このために、GROUP BY MONTH()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1628 -> ( -> PurchaseDate date, -> Amount int -> ); Query OK, 0 rows affected (1.55 sec) 挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。 mysql> insert into DemoTabl