
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で表結合+DELETEしたい
-
列が存在しないと言われる
-
■一番最初に値が入っている(Nul...
-
powergres(postgres)にalter文...
-
constraint と index の違い
-
SQLite:項目が存在しない場合の...
-
Excel 2019 のピボットテーブル...
-
Oracle 2つのDate型の値の差を...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
ワードで4段組みで文章を書い...
-
【マクロ】列を折りたたみ非表...
-
Accessでテーブル名やクエリ名...
-
INSERT INTO ステートメントに...
-
Accessレコードの追加や変更が...
-
SQLServer2005のSQL文での別名...
-
Accessファイルを作成者以外は...
-
アリエクで買った商品が破損し...
-
データベース内のテーブル名の取得
-
Accessで、複数のテーブルで随...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
列が存在しないと言われる
-
alter tableすると、処理が止ま...
-
長いSQL文を実行するには?
-
DBから日付順に指定件数の削除...
-
PostgreSQLで表結合+DELETEしたい
-
INSERTできるレコード数を制限...
-
COPY時のtimestamp型について
-
0の除算
-
■一番最初に値が入っている(Nul...
-
constraint と index の違い
-
特定の位置が特定の範囲に含ま...
-
INSERTできない
-
SQLで特定データがNULLなら別デ...
-
SQLite:項目が存在しない場合の...
-
powergres(postgres)にalter文...
-
postgreSQLの日付を変数にする...
-
インデックスの削除と、インデ...
-
リストを出力する際にSQLでデー...
-
DB2 「既存カラムへのnot null...
-
CREATE INDEXはどういう時に使...
おすすめ情報