• ベストアンサー
  • 暇なときにでも

UNIONと同じことを3.23でできますか

お世話になります。 4.0以降で使われているテーブルをたてに連結する UNION演算子と同じことを MySQL3.23で行う方法をどなたかご存知ないでしょうか? よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数99
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

テンポラリに投げ込む方法があります。 単純にやるとこんな感じですね CREATE TEMPORARY TABLE `テンポラリ` SELECT * FROM `テーブルA`; INSERT INTO `テンポラリ` SELECT * FROM `テーブルB`; SELECT * FROM `テンポラリ`; しかし、この場合型がうまくつたわらないので CREATE するときにきちんと型指定をした方が間違いないです。 CREATE TEMPORARY TABLE `テンポラリ`(`ID` INT,`DATA1` VARCHAR(50),`DATA2` VARCHAR(50)); INSERT INTO `テンポラリ` SELECT `ID`,`DATA1`,`DATA2` FROM `テーブルA`; INSERT INTO `テンポラリ` SELECT `ID`,`DATA1`,`DATA2` FROM `テーブルB`; SELECT * FROM `テンポラリ`; なお当然ですが流し込んでから絞込みをするよりは 絞り込んでから流し込み、再度絞り込みをした方が効率的ですね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

なるほどテンポラリテーブルの活用があったのですね。。 それぞれのテーブルのデータを 一つのテーブルに無理やり詰め込んで管理するしかないかなあ と考えておりました。 この方法だと視認性を犠牲にせずスマートに管理できそうです。 有り難うございます。

関連するQ&A

  • UNIONについて

    お世話になっております。UNIONについて伺いたいことあり質問させていただきます。(MySQL5.1系) 2つのテーブルがあり、縦に?検索したくUNIONを使ってSQL文を作ってみました。 この検索対象となる2つのテーブルは構成も違えば、カラム名も違うのですが、 SELECT name, address FROM member UNION SELECT c_name, c_address FROM class とこのようにしたら欲していた結果を得ることが出来ました。 そ、ここで質問なのですが、今回、UNIONを使うのは初めてなのですが、色々と調べていると、 UNIONを使うときは、カラム名が同一なものが条件のように書かれているものが多くあり、 多くのサイトのサンプルソースを見てみると、以下のようにカラム名が同一なものばかりと、 そんな印象があるのですが、UNIONを使う場合は、カラム名が同一でないと駄目なのでしょうか? SELECT name, address FROM member UNION SELECT c_name, c_address FROM class また、もう1点伺いたいのですが、UNIONを使い、ORDER BYを場合、以下のように SELECT文ごとにカッコで括るとも調べたのですが、結果は何も変わらない状態になっています。 (SELECT no, name, address FROM member ORDER BY no desc) UNION (SELECT c_no, c_name, c_address FROM class ORDER BY c_no desc) 上記にあるように、テーブル名classのORDER BY c_no descが利くようにするには どのようにすべきなのでしょうか? お忙しい中恐縮ですが、宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • UNIONとUNION ALLの違いについて

    お世話になります。 一応違いについては把握しておりますが、念のため 確認させて下さい。 以下のクエリがあります。 クエリA  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5 クエリB  受注日   型番  数量の合計  2015/01/01 BBB   5  2015/01/01 CCC   10  2015/01/02 CCC   5 クエリA UNION クエリB の場合は、  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5  2015/01/01 CCC   10  2015/01/02 CCC   5 となると思ってます。 ※型番Bの重複がマージされる クエリA UNION ALL クエリB の場合は、  受注日   型番  数量の合計  2015/01/01 AAA   10  2015/01/01 BBB   5  2015/01/01 BBB   3  2015/01/01 CCC   10  2015/01/02 CCC   5 となると思ってます。  ※重複があっても単純にくっつける。 あってますでしょうか? で、例えば、テーブルA及びBにそれぞれ「ライン」という項目があり、 テーブルAの方は、L01、L02となっており、テーブルBの方は LL01、LL02となっていたとしたら(要するにテーブルAのラインと テーブルBのラインが重複することが無い)、UNIONでも UNION ALLでも、どちらでも結果が同じになる・・・という ことであってますでしょうか? ご教示の程、宜しくお願い致します。

  • PL/SQLで連結(||)と結合(=>)の違い

    質問させていただきます。 現在、ネットで学びながらPL/SQLで開発を行っています。 演算子についてなのですが、 連結演算子(||)と結合演算子(=>)は、どのような差異があるのでしょうか? ご存じの方がいらしたら、よろしくお願いします。

  • 3つ以上のテーブルをUNIONするのは現時的でないでしょうか?

    UNIONは2つテーブルをくつける際によく使用しますが、 3つのテーブルをUNIONすると凄く重たいでしょうか? UNIONの内部処理がわからないので判断に困っています。

    • ベストアンサー
    • MySQL
  • 同じテーブルでのUNION

    テーブルtableである列aのデータが1,2,3,4,5,6,7,8,9と 入っていたとします。 このテーブルを1,2,5,3,4,6,7,8,9という順番で SELECTしたい場合はどのようにすればよろしいでしょうか? select a from table where a IN (1,2) union select a from table where a = 5 union select a from table where a NOT IN (1,2,5) としてみたのですが1,2,3,4,5,6,7,8,9と表示されてしまいます。 宜しくお願いいたします。

  • 構造が異なる二つのテーブルをunionで結ぶには?

    構造が異なる二つのテーブルをUNION(問い合わせの結合)したいのですが, 対応しないカラムの分だけ "length('') as user_id"などとして ダミーカラムを作り,無理やり結合する方法を取っています. もっとスマートに UNIONする方法はないのでしょうか?

    • ベストアンサー
    • MySQL
  • unionの結果は集計はできないですよね。。。。

    【明細データ】と【変換テーブル】で、変換後明細データを作成 して、その結果を集計したいのですが、、、 下記の結果を求めるためにはSQLひとつで可能でしょうか? ※(3)の表まではunionで可能でしたが、unionでは集計はできないですよね。。。。 (1)【明細データ】 CODE VALUE AMOUNT A 1000 10000 B 2000 20000 C 3000 30000 D 4000 40000 E 1001 10000 F 2001 20000 G 3000 30000 H 4000 40000 (2)【変換テーブル】 VALUE1 VALUE2 1000 1001 2000 2001 (3)【変換後明細データ】 CODE VALUE AMOUNT A 1001 10000 B 2001 20000 C 3000 30000 D 4000 40000 E 1001 10000 F 2001 20000 G 3000 30000 H 4000 40000 (4)【SQL抽出結果】が欲しい VALUE AMOUNT 1001 20000 2001 40000 3000 60000 4000 80000

  • '||'の読み方について

    SQLの連結演算子である'||'って何て読みますか? '|'だとパイプラインですよね。 ダブルパイプラインとでも読めばいいでしょうか。

  • 現在、日本からWestern Unionでの送金

    いつも大変お世話になっております。 海外に商品を注文したところ 「支払いはWestern Unionで」と連絡が来ました。 早速調べたところ、現在日本にはWestern Unionの代理店がないとわかりました。 日本からWestern Unionで送金する方法はないでしょうか? 相手方に「それ以外の送金方法はありますか?」と聞く方がいいのでしょうか? 恐れ入りますが、ご教示いただけますと幸いです。

  • sql連結演算子concatと"||"

    mysqlにて、"||" を連結演算子として使いたいと思います。 my.iniのsql-modeに"PIPES_AS_CONCAT"をカンマ区切りで追加しました。 しかし、結果として反映してくれませんでした。 最終的にjavaからアクセスしたいので、my.ini内で設定したほうが確実だと思ったのですが…。 "||" と同意のconcatも試してみましたが、 連結する文字列が多いせいか(10個くらいです)エラーになることと、 sqlのcase文とあわせて使うことができなかったので悩んでいます。 いい方法があればご教授ください、お願いします。