web-dev-qa-db-ja.com

IDフィールドのないSQLテーブルの最後の10行を選択する方法は?

25000行のMySQLテーブルがあります。

これはインポートされたCSVファイルなので、最後の10行を見て、すべてがインポートされたことを確認します。

ただし、ID列がないため、次のことは言えません。

SELECT * FROM big_table ORDER BY id DESC

このテーブルの最後の10行を表示するSQLステートメントは何ですか?

テーブルの構造は次のとおりです。

columns are: A, B, C, D, ..., AA, AB, AC, ... (like Excel)
all fields are of type TEXT
21
Edward Tanguay

SQLテーブルには暗黙的な順序付けはありません。順序はデータから取得する必要があります。おそらく、テーブルにフィールド(たとえば、intカウンター)を追加して、データを再インポートする必要があります。

ただし、これはインポートの順序のみを示し、データは示しません。データに順序がない場合は、データを追加する方法を見つける必要があります。

編集:あなたが言う

...すべてをインポートしたことを確認します。

行カウントの使用の何が問題になっていますか?

15
Tony

ここでの答えはすべて優れていますが、念のため...最後に追加されたレコードを10個取得する方法があります。 (これは非常に信頼性が低いです:))まだあなたは次のようなことをすることができます

SELECT * FROM table LIMIT 10 OFFSET N-10

N-テーブル内の行の合計量(SELECT count(*)FROM table)。準備済みのクエリを使用して、単一のクエリに含めることができますが、それについては説明しません。

23
Ivan

テーブルから選択し、ORDER BY __ DESCを使用して逆順でソートし、結果を10に制限します。

SELECT * FROM big_table ORDER BY A DESC LIMIT 10
16
Steven Scott

「ORDER BY DESC」オプションを使用して、元の順序に戻すことができます。

(SELECT * FROMテーブル名ORDER BY id DESC LIMIT 10)ORDER BY id;

10
Dustin Soodak
SELECT * FROM big_table ORDER BY A DESC LIMIT 10
5
user3305213

_LOAD DATA INFILE 'myfile.csv'_操作を実行している場合、すべての行が入ったかどうかを確認する最も簡単な方法は、show warnings();をチェックすることです。データを空または一時テーブルにロードする場合、チェックすることもできます挿入後の行数。

4
dnagirl

ビッグデータでcount(*)クエリを実行するとコストがかかります。 「SELECT * FROM table ORDER BY id DESC LIMIT n」を使用すると思います(nはページあたりの行数)

2
Sameeh Harfoush

予想される行数がわかっている場合は、予想される構造のデータベースに別の一時テーブルを作成し、その中に追加してからカウントを確認します...それを最終生産表に入れます。

0
DRapp

ローテクなアプローチ:SQLでこれを行うのはやり過ぎかもしれません。質問によると、インポートの1回限りの検証を行う必要があります。

なぜ単にしないのですか:SELECT * FROM ImportTable

次に、結果グリッドの下部までスクロールし、「最後の」数行を視覚的に確認します。

0
Paul Sasik

コードを使用すると、テーブルの最後から10行を選択できます。 select * from(SELECT * FROM table1 order by id desc LIMIT 10)as table2 order by id "

0
mahdiaction