
No.2ベストアンサー
- 回答日時:
incho0922さんのSQLに補足しいますと、
DELETE FROM A_TABLE AS A_TABLE_1 WHERE ID = ( SELECT ID FROM A_TABLE AS A_TABLE_2 ORDER BY mDate LIMIT 30 )
だと、副問い合わせの文では複数行返してしまいますので"="だとエラーになってしまいます。
ですので、
DELETE FROM A_TABLE AS A_TABLE_1 WHERE ID IN ( SELECT ID FROM A_TABLE AS A_TABLE_2 ORDER BY mDate LIMIT 30 )
ならご希望の結果が得られると思います。
ありがとうございます。
ROWNUM句はOracleでしか使えない?ようですね。
DB環境で試してみるとエラーとなりました。
"AS" で引っ掛かったのですが、以下のSQLで求める動作ができそうです。
DELETE FROM A_TABLE WHERE ID IN ( SELECT ID FROM A_TABLE AS A_TABLE_2 ORDER BY mDate LIMIT 30 )
何かありましたらご指摘頂けると助かります。
No.1
- 回答日時:
回答ではありません。
PostgreSQLには詳しくありませんし、現在手元に実行環境がありませんので、SQL一般で考えてみました。(役に立たなくてすみません^_^;)
おそらく、RowNumというフィールドがなければ、このSQL文はエラーになると思います。
MS SQLなどではSELECT文中にTOP句が使えるので、同じようなことができないかと、PostgreSQLのリファレンスを見てみたところ、LIMIT句というのがありますね。
LIMIT句を使うと、ORDER BYで並べ替えた結果の先頭30件などを取得できるので、
A_TABLEの主キーのフィールドがIDと仮定すると
SELECT ID FROM A_TABLE ORDER BY mDate LIMIT 30
で、古いものから30件が取得できますから、それをDELETE文のWHERE条件に指定したらお望みのことができそうです。
DELETE FROM A_TABLE AS A_TABLE_1 WHERE ID = ( SELECT ID FROM A_TABLE AS A_TABLE_2 ORDER BY mDate LIMIT 30 )
などとしてみたらできそうな気がしますが、なにぶん試す環境がありません。m(__)m
参考URLを載せておきますので、試してみてください。
参考URL:http://www.postgresql.jp/document/pg814doc/html/ …
ありがとうございます。
ROWNUM句はOracleでしか使えない?ようですね。
DB環境で試してみるとエラーとなりました。
"AS" で引っ掛かったのですが、以下のSQLで求める動作ができそうです。
DELETE FROM A_TABLE WHERE ID IN ( SELECT ID FROM A_TABLE AS A_TABLE_2 ORDER BY mDate LIMIT 30 )
何かありましたらご指摘頂けると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列が存在しないと言われる
-
インデックスの削除と、インデ...
-
PostgreSQLの「not null」制約...
-
SQL における変数の宣言と代入...
-
CREATE INDEXはどういう時に使...
-
複数キーワードでのあいまい検索
-
カラムのデフォルト値に16進数
-
PostgreSQLで表結合+DELETEしたい
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
ACCESSのSQLで数値型に変換する...
-
『iPod nano』英語→日本語に直...
-
Accessでテーブル名やクエリ名...
-
Access97の不具合(?)
-
エクセルグラフの凡例スペース
-
ACCESSについて質問させ...
-
Accessでテーブルからテーブル...
-
Accessのリンクテーブルのパス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLで表結合+DELETEしたい
-
列が存在しないと言われる
-
長いSQL文を実行するには?
-
INSERTできるレコード数を制限...
-
0の除算
-
alter tableすると、処理が止ま...
-
SQLで特定データがNULLなら別デ...
-
DBから日付順に指定件数の削除...
-
constraint と index の違い
-
大量データを更新したら、処理...
-
動的に生成したカラムを使ったF...
-
SQLite:項目が存在しない場合の...
-
DB2 「既存カラムへのnot null...
-
powergres(postgres)にalter文...
-
INSERTできない
-
postgreSQLの日付を変数にする...
-
SQL における変数の宣言と代入...
-
PostgreSQLの「not null」制約...
-
インデックスの削除と、インデ...
-
UPDATE文について
おすすめ情報