実現したいこと
MySQLのSQLで下記のような結果を取得したいです。
※テーブルに事前に下記のようなレコードを格納して結果を取得するのではなく、実データは保持せずにSQLの関数等を利用して出力させたいです。
■取得したい結果■■■■■
Num ←※ヘッダー
800
801
802
803
・・・
(省略)
・・・
897
898
899
■実現させたい理由■■■■■
SQL Server から MySQLにDBを変更することになりました。
SQL ServerのSQLに、下記のような記載があり、動作を見ていると800番台の数値を表示するためのSQLのように思われます。(おそらく)
そのため、MySQLでも同じように800番台の数値を表示する列の出力方法を知りたいです。
・・・省略・・・ SELECT TABLE.Num FROM (SELECT ROW_NUMBER() OVER (ORDER BY object_id) AS Num FROM sys.all_columns) TABLE WHERE TABLE.Num >= 800 AND TABLE.Num <= 899 ・・・省略・・・
発生している問題・分からないこと
・SQLでは「sys.all_columns」というテーブルを用いて上記を実現しているようなのですが、MySQLで同じようなことをしたい場合は、どのテーブルを利用するのがよい(おすすめ)でしょうか?
→補足:おそらくレコード数が899件以上あるためSQL Serverの「sys.all_columns」というテーブルを使っているのかな?と考えています。
※下記のようにするとMySQLでも800番台の値を表示する列を出力可能なのは確認できるたのですが、テーブルのレコード数が899件より少ない場合は実現不可能な想定です。899件以上レコードがあることが(ほぼ)保証されているテーブルなどあればご教授いただけますと幸いです。(MySQLのシステム系テーブルのように最初から用意されているテーブルを使用したいと考えております)
SET @num = 799; SELECT @num := @num + 1 FROM テーブル名 ※「テーブル名」にはレコード数が899件以上ある必要がある
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
■調べて分かっていること■■■■■
・「ROW_NUMBER」関数はMySQLでは使用できないこと。
→代わりにユーザ定義変数などを利用して実現する必要があること。
ご教授いただけますと幸いです。
よろしくお願いいたします。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/01/17 09:06