2017-09-16 15 views
4

私はPHPの小さなプロジェクトに取り組んでいます。ここでは、レコードの最初から5レコード、テーブルのレコードの最後から最後のレコード1が必要です。私は単一のmysqliクエリを書く方法を知らない。 助けていただければ幸いです。前もって感謝します。テーブルmysqlから最初の5レコードと最後のレコードを取得するにはどうすればよいですか?

+2

チェックアウトUNIONキーワード。 – Calimero

答えて

7

SQLテーブルは、の順不同であるを表します。したがって、列が明示的に順序を定義しない限り、最初の5行または最後の行などはありません。

多くの場合、テーブルには、この目的で使用できる自動インクリメントID列があります。もしそうなら、あなたが行うことができます:

(select t.* 
from t 
order by id asc 
limit 5 
) union all 
(select t.* 
from t 
order by id desc 
limit 1 
); 

注:

  • 時々、挿入日付/時刻の列には、使用するための適切な列です。
  • 重複する値を削除するオーバーヘッドが発生しない限り、unionではなくunion allを使用します。
  • このフォーミュレーションでは、6行未満の場合、重複が発生します。
+0

偉大な答え。私はUNION ALLと二重問題について知らなかった。 – Calimero

+0

ありがとう@Gordon Linoffその完璧な作業。 –

+0

ちょっと@ゴードンLinoffは、最後の1つのレコードよりもクエリ結果最初の5つのレコードよりもテーブルに5つだけのレコードがある場合は、また、クエリ結果に含まれている5つは何ですか? @UmarShahzad。 –

5

UNION演算子は慎重にORDER BYとLIMIT句をいじる、これを可能にする:1に2つのSQLクエリの結果を結合する

(SELECT * FROM table ORDER BY field ASC LIMIT 5) 
UNION 
(SELECT * FROM table ORDER BY field DESC LIMIT 1) 
+0

wao thatsすばらしいおかげだよ(Y) –

+0

yw、しかし、私は以下のような@Gordon Linoffの答えを受け入れることをお勧めします:あなたのケースに関連しているならば、彼はUNION ALLの特質と利点を説明してくれました。 – Calimero

関連する問題