• ベストアンサー

ポストグレスでfrom句の中にselect文を入れたい

from句の中にselect文を入れたい。 つまりテーブル名の変わりにselect文にするということですが。 select * from [select * from tbl2]. as t2 なんて感じでアクセスではできるのですが ポストグレスの場合、やりかたがわかりません。 どうすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • THX1138
  • ベストアンサー率51% (108/208)
回答No.1

できますよ。まる括弧で囲んでください select * from (select * from tbl2) as t2

lord_chan
質問者

補足

ありがとうございました。 補足ですが、アクセスでできるisnumeric関数、 つまり数値かどうかを判断する方法はありますでしょうか?

関連するQ&A

  • 「SELECT ~  FROM テーブル名」の後に続く句は「WHERE句」と「ORDER BY句」以外にありますか?

    最近アクセスのSQL文を学びました。 選択クエリのSQL文で 「SELECT ~  FROM テーブル名」 の後に続く句は 「WHERE句」と 「ORDER BY句」以外にありますか? よろしくお願いします。

  • FROM句にサブクエリ使えませんか

    SELECT ユーザー名 FROM (SELECT ユーザー名 職員マスタ UNION SELECT ユーザー名 入社記録) という形で一意のユーザー名を取得しようとしています。 UNIONだけの文ならちゃんと取れるのですが、サブクエリにしてFROM句に書くとエラーになります。 SQLServerではFROM句にサブクエリは使えないのでしょうか。

  • SELECT文

    SELECT文で区分ごとに番号、番号名を表示させたいのですが。 T_テーブルに区分が1から5まであるのですが、select文一発で表示したいです。 番号は1~5,番号2は5~6まで表示したいのです。 区分は2の情報を取得する 1テーブルの情報を番号ごとに分けて表示したいです (例) 番号 番号名     番号1 番号名2 1 iti       5 go 2 ni      6 roku 3 san      7 nana 4 yon      8 hati T_テーブル情報 下記 区分 varchar(2) 番号 varchar(6) 番号名 varchar(16) SELECT T_テーブル.区分, T_テーブル.番号, T_テーブル.番号名, T_テーブル_1.番号, T_テーブル_1.番号名 FROM T_テーブル AS T_M_名称_1 INNER JOIN T_テーブル ON T_テーブル_1.区分 = T_テーブル.区分WHERE T_テーブル.区分 = '2'

  • SELECT * FROM セレクト文の解釈

    SQL文について SELECT CustomerID, CompanyName FROM Customers セレクト文なのですがセレクトは その名の通り「選ぶ」という意味で fromは「から」という意味だと思うのですが select * from は「~から選んだ」みたいな解釈で良いのでしょうか? SQL初心者です。

  • select文でGROUP BYの正しい使い方

    下記のselect文は問題ないでしょうか?テーブルには5つのフィールド(id,name,age,gender,office)が存在します。 select * from テーブル名 where age >= '40' GROUP BY gender 実際に試したところ、うまく動いているのですが、GROUP BY句で指定されたフィールド名はSELECT句のフィールド指定をすべて含んでいなくてはならないと書かれているのを見つけました。 上記のselect文は正しいのでしょうか。

    • ベストアンサー
    • PHP
  • viewでfrom句にサブクエリが書けない

    こんにちは。MYSQLのVIEWの代替についてお教え下さい。 下記でinner joinについて教えて頂きました。 http://okwave.jp/qa/q7296711.html 環境はWin 7 MYQL5です。 t1テーブルのデータ ID,在庫 001,22 t2テーブルのデータ ID,出庫 001,17 001,3 SELECT A.z AS `在庫`,B.* FROM (SELECT SUM(stock) AS z FROM t1 WHERE id='001' GROUP BY id) A INNER JOIN t2 B ON A.id=B.id というコードで、それぞれのテーブルをグループ化してグループ化したもの同士をJOINしました。 このコードを元にVIEWを作り、そのVIEWを対象にクエリを作ろうと考えていました。 しかしながら、MYSQLのVIEWではFROM句でサブクエリは使えませんでした。 http://www.klab.jp/media/mysql/index4.html 上記のコードを書きなおして、なんとしてもVIEWで利用したいのですが、FROM句でサブクエリを使わずにVIEWを作成する方法がわかりません。 どのようにリライトすればよいか、ご助言お願い致します。

    • ベストアンサー
    • MySQL
  • select from *の意味

    SELECT * FROM *の意味 SELECT ~ FROMの中に 「*」があると思いますが省略できるのでしょうか? また*の代わりにテーブル名などをいれることができるのですか?

  • select文のwhere句に配列を入れて検索したい

    こんばんは。 題名の通り、select文のwhere句に配列を入れて検索したいのですが、 同じ質問↓も見つけ、やってはみるのですがうまくいかないので、教えてください。 http://oshiete1.goo.ne.jp/qa2940474.html 現在、 $member_id という配列にデータを入れ(この配列には正しく値が入っています。) $sql = "SELECT * FROM テーブル名 WHERE id IN (".$member_id."); としているのですが、うまくいきません。 どこがおかしいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SELECT文中のFROM区

    SELECT文のFROM区にはテーブル名が並びますが、 SELECT … FROM TSCD001, TSCD002 TSCD002_SK, TSCD003 CT1001, TSCD004 TSCD004a WHERE … のように記述されているSELECT文があります。 FROM区の1行目(TSCD001)は理解できますが、 質問(1) 2行目 『TSCD002 TSCD002_SK』のような書き方はどのような 意味をもつのでしょうか?TSCD002はテーブル名だということは 分かっています。TSCD002_SKは何でしょう? (4行目も同様のパターンのようです)  質問(2) 3行目 『TSCD003 CT1001』のTSCD003はテーブルであり、 CT001もテーブルでした。このようにテーブルを半角スペースで 並べて書くのはどのような意味があるのでしょうか?

  • WITH句を使用したSQLの結果

    WITH句を使用して総件数と1~20件までのデータを同時に取得するSQLを組んでみたところ、 WITH TMP AS (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO) SELECT T1.ALLCNT, T2.* FROM (SELECT COUNT(*) ALLCNT FROM TMP) T1, TMP T2 WHERE T2.CHECKROWNUM BETWEEN 1 AND 20; Oracle10.2.0.3.0のバージョンで ALLCNTが21になってしまう現象が発生してしまいました。 Oracle10.2.0.4.0や9iでは発生せず正しい総件数が取得できるのですが、 バージョンによる不具合は考えられますでしょうか。 それともSQL自体なにか悪い部分があるのでしょうか。 ちなみに T2.CHECKROWNUM BETWEEN 1 AND 100; と帰るとALLCNTが101と帰ってきます。 また、WITH句を使わず下記のようにTMPの部分をWITH句で使用したSQLに 置き換えると正しくALLCNTが取れます。 SELECT T1.ALLCNT, T2.* FROM (SELECT COUNT(*) ALLCNT FROM (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO)) T1, (SELECT ROW_NUMBER() OVER (ORDER BY NO) AS CHECKROWNUM,NAME FROM TEST_TBL ORDER BY NO) T2 WHERE T2.CHECKROWNUM BETWEEN 1 AND 20;