- PR -

FETCH LASTについて

1
投稿者投稿内容
社内竜王
常連さん
会議室デビュー日: 2006/12/12
投稿数: 20
投稿日時: 2007-01-19 16:59
いつもお世話になります。
早速ですが、SQLについて質問させて下さい。

データベースのテーブルから最初の10行を取りだそうとすると、以下のSQLになります。
SELECT * FROM TEBLE FETCH FIRST 10 ROWS ONLY

では、最後の10行を取り出す時はどう書けばいいのでしょうか。
ちなみに、
SELECT * FROM TABLE FETCH LAST 10 ROWS ONLY
ではSQLSTATE=42601のエラーになります。

どなたかご存知のかたご教授お願い致します。
社内竜王
常連さん
会議室デビュー日: 2006/12/12
投稿数: 20
投稿日時: 2007-01-19 17:30
引用:

どらねこさんの書き込み (2007-01-19 17:22) より:
参照元記事
http://www.postgresql.jp/document/pg800doc/html/sql-fetch.html

を参考にすると単純に
SELECT * FROM TABLE FETCH LAST -10 ROWS ONLY

ではどうでしょうか?




どらねこさん、書き込みありがとうございます。
上記サイト私も見てましたが、わかりませんでした。
ご指摘の SELECT * FROM TABLE FETCH LAST -10 ROWS ONLY
でも実行してみましたが、
SQLSTATE=42601のエラーで10が無効と表示されました。
いまだ未解決です。
どらねこ
会議室デビュー日: 2006/11/29
投稿数: 6
投稿日時: 2007-01-19 17:44
引用:

社内竜王さんの書き込み (2007-01-19 17:30) より:
引用:

どらねこさんの書き込み (2007-01-19 17:22) より:
参照元記事
http://www.postgresql.jp/document/pg800doc/html/sql-fetch.html

を参考にすると単純に
SELECT * FROM TABLE FETCH LAST -10 ROWS ONLY

ではどうでしょうか?







すみません。間違ってたぽく元の書き込みは消させていただきました。

それでですが、-10にした場合、エラーで10が無効と表示されたみたいですが
元の
SELECT * FROM TABLE FETCH LAST 10 ROWS ONLY

の場合でも同じエラー内容でしょうか?
社内竜王
常連さん
会議室デビュー日: 2006/12/12
投稿数: 20
投稿日時: 2007-01-19 17:50
どらねこさん、お世話になります。

SELECT * FROM TABLE FETCH LAST 10 ROWS ONLY
の場合のエラーは以下です。

SQL実行中に以下のエラーが発生しました。
エラーコード:-104 [IBM][CLI Driver][DB2/NT] SQL0104N "om db2admin.password" に続いて予期しないトークン "fetch" が見つかりました。入力が予想されるトークンには "JOIN <joined_table>" が含まれている可能性があります。 SQLSTATE=42601

どういうことなのか途方にくれています。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-19 18:52
order by [sorkey] desc で先頭十行を取得するのはどうでしょう。
社内竜王
常連さん
会議室デビュー日: 2006/12/12
投稿数: 20
投稿日時: 2007-01-19 19:06
引用:

インギさんの書き込み (2007-01-19 18:52) より:
order by [sorkey] desc で先頭十行を取得するのはどうでしょう。



インギさん、いつもお世話になります。
ちなみに order by [sorkey] desc の [sorkey]には何をいれたらいいのでしょうか。
いろいろためしましたが、最後の10行がうまく表示されず、意図しない10行が表示されて
しまいました。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-01-19 19:57
sorkey は sortkey のタイプミスでした。
ソート順を普段と逆にして先頭十行を取得すれば通常のソート順の最後の十行がとれるのではないかということです。
Jaune
会議室デビュー日: 2006/12/02
投稿数: 16
投稿日時: 2007-01-21 21:32
引用:
社内竜王さんの書き込み (2007-01-19 19:06) より:
ちなみに order by [sorkey] desc の [sorkey]には何をいれたらいいのでしょうか。
いろいろためしましたが、最後の10行がうまく表示されず、意図しない10行が表示されて
しまいました。


行番号を付け、行番号で逆順にして先頭10行を取得すれば良いのではないでしょうか?
使用している RDBMS が何かは解りかねますが、
>SQLSTATE=42601
>エラーコード:-104 [IBM][CLI Driver][DB2/NT] ・・・
から判断して IBM DB2 だと仮定するとROW_NUMBER関数が使用できると思います。

また、テーブル行数があらかじめ解るのであればこのような方法もありますね。
http://db2forum.jp/viewtopic.php?t=247&sid=95c8e77d8e51267c43e6e165de20dff2

# 最低限どの RDBMS を使用しているか書いておかないと、回答してくれる方に対して無用な手間をかけさせてしまうと思うのですが・・・
1

スキルアップ/キャリアアップ(JOB@IT)