• 締切済み
  • すぐに回答を!

副問い合わせ

UPDATE `hoge` SET `area` = ( SELECT area FROM `hogeArea` WHERE `code` = "001000" ) WHERE `code` = "000019" AND `type` = "02"; 上記のようなUPDATEは無理ですか? MySQLは副問い合わせは無理でしょうか?

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

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

みんなの回答

  • 回答No.1
  • auty
  • ベストアンサー率58% (284/486)

バージョンの4.1以降ごろから、「副問い合わせ」が使えるようになっていますが、 バージョンをチェックしてみてはどうでしょうか。

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

関連するQ&A

  • 副問い合わせを使わずに書く方法

    テーブルAとBがあり、どちらも列idとnameがあります。Aのnameは最初はNULLです。AのnameをBから持ってきてUPDATEしたい(AのidのうちBにあるもののnameをAにコピーする)のですが、MySQLのバージョンが古く、副問い合わせが使えず、以下のようなことができないので困っています。どなたか教えていただけませんか。 UPDATE A SET name = ( SELECT name FROM B WHERE A.id = B.id ) WHERE EXISTS ( SELECT 'X' FROM B WHERE A.id = B.id ) ;

    • ベストアンサー
    • MySQL
  • SQLでSELECTした一覧をUPDATEする方法を教えてください。

    AのテーブルをINNER JOINのWHERE文を用いて、selectした結果の項目にBテーブルの内容をUPDATEしたいのですが、 下記方法でうまくいきません。 解決方法を教えてください。 よろしくお願いいたします。 SELECT A.PointZan FROM A INNER JOIN B ON A.Code = B.Code WHERE (B.TrDate = '091012') AND (B.Comment = '失効中止') UPDATE A SET PointZan = (SELECT B.PointZan FROM B INNER JOIN A ON B.Code = A.Code WHERE (B.TrDate = '091012') AND (B.Comment = '失効中止'))

  • 副問い合わせについて

    お世話になります。明日から仕事で使うのですが、下記の構文が よく理解できません。宜しくお願い致します。 SQL Severは経験ありません。 経験はInfomixSql,Access,MySql程度です。 (1)行副問い合わせ(副問い合わせの結果が1行n列で返ってくる) SELECT * FROM t1 WHERE (c4, c2) = (SELECT MAX(c1), 'a' FROM t2); このwhere節の結合条件はどのような感じになるのでしょうか? (2)表副問い合わせ(副問い合わせの結果がm行n列(表)で返ってくる) SELECT * FROM t1 WHERE c4 IN ( SELECT c1 FROM t2 WHERE c4 >= 10 ) ORDER BY c1; 、 SELECT x1.c1, x2.y4 FROM t1 x1, ( SELECT c3, SUM(c4) AS y4 FROM t2 GROUP BY c3) AS x2 WHERE x1.c3 = x2.y4 ORDER BY c1; (1)に同じです。 参考になりそうなサイトでも結構ですので 宜しくお願い致します。

  • EXSIST述語を使った副問合わせについて

    SELECT HINMOKU_NAME FROM HINMOKU WHERE HINMOKU_CODE IN (SELECT HINMOKU_CODE FROM URIAGE WHERE URIAGE_DATE = '2004-11-10'); 上記をSQL文をEXISTS述語を使って書き換えると エラーが出てしまい、うまく書き換えがすることが できません。下記にエラーがでるSQL文を記載いたします。 SELECT HINMOKU_NAME FROM HINMOKU WHERE EXISTS (SELECT HINMOKU_CODE FROM URIAGE WHERE URIAGE_DATE ='2004-11-10' WHERE HINMOKU.HINMOKU_CODE=URIAGE.HINMOKU_CODE); 上記SQL文についてどこに問題があるのか、ご教授お願い致します。

  • 単純なクエリーなのにSELECTしてもEmpty

    | Field  | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+----------------+ | page_id | int(10) | NO | PRI | NULL | auto_increment | | site   | varchar(255) | YES | MUL | NULL | | ... ... ... このようなテーブルがあり、以下の様なSELECT文を発行してもEmptyとなってしまいます。 > SELECT `page_id` FROM `table` WHERE `site` = 'hoge'; 自分なりに色々と調べてみたところ、 > UPDATE `table` SET `site` = 'fuga' WHERE `page_id` = 1; > SELECT `page_id` FROM `table` WHERE `site` = 'fuga'; とするとちゃんと1件返ってきます。 ですが、また > UPDATE `table` SET `site` = 'hoge' WHERE `page_id` = 1; > SELECT `page_id` FROM `table` WHERE `site` = 'hoge'; とするとEmptyとなってしまいます。 どうやら、INSERTしたレコードをWHERE `site` = 'hoge'するとEmptyとなるような気がします。 何度も試したので、単純に`site` = 'hoge'の文字列自体が間違っている、などのことは無いはずです。 以下の点も合わせて、どのような原因が考えられるでしょうか。 ・レコードのINSERTは、クローラーによって行われていています。 ・他のフィールドは通常通りSELECTすることができます。 ・ストレージエンジンはmroongaです。 どなたか解決策がわかる方いらっしゃいましたら、ご回答頂ければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • PHPでMySQLのSET @hoge:=□;は?

    ・PHPで、MySQLのSET @hoge:=□;は使えないのでしょうか? ・一度SQL経由で取得したデータをPHPでセットして、再度SQL発行するしかない? ■やりたいイメージ $sql = ' SET @hoge:=□; SET @piyo := ■; SELECT * FROM temp WHERE date BETWEEN @min AND @max; '; $sth = $pdo->prepare($sql);

    • 締切済み
    • PHP
  • 場合により問い合わせが異常に遅い(PostgreSQL)

    こんにちは、honiyonです。   2つのテーブルを参照して結果を問い合わせるSQLについて質問です。 SELECT * from A,B where ((A.ID=B.ID) and (A.DAT1=1)) and (A.Kind=1) and (A.Open=1) order by A.hoge;   で問い合わせると返ってくるまで数秒時間がかかります。   しかし、 SELECT * from A,B where ((A.ID=B.ID) and (A.DAT1=1)) and (A.Kind=0) and (A.Open=0) order by A.hoge;   で問い合わせると瞬時に返ってきます。   双方とも検索結果は0件です。   検索処理の条件は同じはずなのに・・・と思うのですが。   どんな理由が考えられるでしょうか?また、高速化するにはどんな対策があるでしょうか?   因みに、A.ID,B.IDはcharで、DAT1,Kind,Openはintです。   distは、Vine2.5, DBは、PostgreSQL 7.2.3です。   宜しくお願いします(..

  • IN句に副問合わせを使う場合と使わない場合

    お世話になります。 SQLについての質問です。 RDBMSはSymfowareです。 IN句に副問い合わせを指定するSQLと その副問い合わせの結果を直接IN句に記載したSQLで 結果が異なってしまいます。 こういうことってありますでしょうか。 以下のようなSQLです。 (1) SELECT * FROM T1 WHERE T1.column_A IN ( SELECT T2.column_A FROM T2 WHERE T2.column_B='XXXX' ) 上記IN句内のSELECT文の結果は、'A'、'B'、'C'、'D'です。 (2) SELECT * FROM T1 WHERE T1.column_A IN ('A','B','C','D') この(1)、(2)のSQLの結果が異なってしまいます。 私の環境では(1)では0件、(2)では2件ヒットします。 なぜこのようになるのかわかる方がいらっしゃいましたら ご教授ください。 ちなみに、DBを操作して、副問い合わせのSELECT文の結果を 'A'、'B'とすると同じ結果が得られます。 副問い合わせのSELECT文の結果が3件以上になると(1)のSQLの 結果は0件になってしまいます。 RDBMSの障害でしょうか・・・? それとも、IN句に副問い合わせを使用する場合、 その副問い合わせの結果は2件以下にする必要がある なんてルールがあったりするのでしょうか。

  • 副問い合わせの不可解な問題

    情報処理試験を受験しようと思いますが、前提知識の補強に今苦戦しています。SQLの問題で以下の出題趣旨と解答の理由がわかりませんでした。どなたか解釈いただければ幸いです。 問)次の表1と表2に対するSQL文のうち、適切なものはどれか 表1        表2 X | Y |Z |   X | Y |Z | a1 | b1|1|  d1 | e1|1| a2 | b2|1|  d2 | e2|1| a3 | b3|2|  d3 | e3|2| ア.Select X FROM 表1  WHERE ( SELECT Y FROM 表2 ) = Y イ.Select X FROM 表1  WHERE Y IN( SELECT * FROM 表2 WHERE Z = 1) ウ.Select X、Y FROM 表1  WHERE Y IN( SELECT Y FROM 表2 WHERE Z = 1) エ.Select X、Y FROM 表1  WHERE Y =( SELECT Y FROM 表2 WHERE Z = 1) 正解はウですが。ウではどのような表が最終的にできるのかわかりません。副問い合わせの仕組みはおぼろげに他の本でわかりましたが、本設問については何度考えてもわかりません。 どなたか助けてください。、。

  • ひらがなの検索結果が正常ではない

    初めての投稿です よろしくお願いします MySQLにてひらがなが入っているカラムでorder byしても予想に反します。文字コードが原因だとは思うのですが、MySQLの設定方法がよく分かっていません。ご指導、よろしくお願いします。 --- MySQLサーバーはLinux Windowsからターミナルにてテーブル作成、データ入力およびselectを実行 mysql> show columns from HOGE; +-----------+-------------+------+-----+ | Field | Type | Null | Key | +-----------+-------------+------+-----+ | id_c | int(11) | | PRI | | hoge_name | varchar(20) | YES | | +-----------+-------------+------+-----+ 2 rows in set (0.00 sec) mysql> select * from HOGE; +------+------------------+ | id_c | hoge_name | +------+------------------+ | 1 | あいうえお | | 2 | かきくけこ | | 7 | まみむめも | +------+------------------+ 11 rows in set (0.00 sec) mysql> select * from HOGE order by hoge_name; +------+------------------+ | id_c | hoge_name | +------+------------------+ | 7 | まみむめも | | 1 | あいうえお | | 2 | かきくけこ | +------+------------------+ 11 rows in set (0.00 sec)

    • ベストアンサー
    • MySQL