プロが教える店舗&オフィスのセキュリティ対策術

以下にある
・▶実行前の「売上情報」
・▶ 実行前[社員情報]

実行結果です。
-------------------------------------------------------------------
mysql> SELECT * from tb1 where bang = (SELECT bang FROM tb WHERE uria>=200 LIMIT 1);
+------+------+------+
| bang | nama | tosi |
+------+------+------+
| A101 | 佐藤 | 40 |
+------+------+------+
しかし
---------------------------------------------------------------------
mysql> SELECT * from tb1 where bang = (SELECT bang FROM tb WHERE uria>=200 LIMIT 2);
ERROR 1242 (21000): Subquery returns more than 1 row
------------------------------------------------------------------------
エラーとなります。
・・・uria>=200 LIMIT 2);とした場合「| A102 | 205 | 高橋 |」も
該当するはずですが、エラーとなるのは ただのバグなのでしょうか?
 よろしくお願いいたします。

▶実行前の「売上情報」テーブル 「tb」
+------+------+------+
| bang | uria | tuki |
+------+------+------+
| A103 | 101 | 4 |
| A102 | 54 | 5 |
| A104 | 181 | 4 |
| A101 | 184 | 4 |
| A103 | 17 | 5 |
| A101 | 300 | 5 |
| A102 | 205 | 6 |
| A104 | 93 | 5 |
| A103 | 12 | 6 |
| A107 | 87 | 6 |
+------+------+------+
P208
▶ 実行前[社員情報]テーブル 「tb1」
+------+------+------+
| bang | nama | tosi |
+------+------+------+
| A101 | 佐藤 | 40 |
| A102 | 高橋 | 28 |
| A103 | 中川 | 20 |
| A104 | 渡辺 | 23 |
| A105 | 西沢 | 35 |
+------+------+------+

質問者からの補足コメント

  • うれしい

    ご紹介してくださいました ググったら
    https://dev.mysql.com/doc/refman/5.6/ja/subquery …
    たくさん出てきますネ!
     内容は気難しいですが 当然のエラー 
    ということでした。

      補足日時:2021/09/01 06:55
  • うーん・・・

    ご回答くださいましてありがとうございます。
     おそらく「uria」の「uria>=200」が2個じゃなくて
    3個以上あればエラーとにはならない!?
    と意味でしょうか?
    エラー内容をそのまま「ググったら」たくさん出てきます。
    しかし
    私の今のレベルだとすぐには理解不可能でした。
    https://www.google.com/search?q=ERROR+1242+(2100 …

      補足日時:2021/09/01 07:04
  • うれしい

    参考書に書いてある意味が今少し分かりました。
    mysql> SELECT * from tb1 where bang = (SELECT bang FROM tb WHERE uria>=200);
    ERROR 1242 (21000): Subquery returns more than 1 row
    参考書~
     もちろん、「=」を使っても、該当するレコードが1件しかなければエラーとはなりません。

    そうですね 国語的発想ならば解が2個
    ある場合があると思います。
    しかし数学的発想の[=]は解は1個
    下記の表のとおり答えが2個あるので
    +------+------+------+
    | bang | nama | tosi |
    +------+------+------+
    | A101 | 佐藤 | 40 |
    | A102 | 高橋 | 28 |
    +------+------+
    =は不適

      補足日時:2021/09/03 07:01
  • うれしい

    「1+1=2」∴数学のロジック⇒
    「解が2以外はあり得ないのに2個あるので」
    該当なしの「=」ではない!
    「だからエラーが出る」
    たぶんそうだと思います。

      補足日時:2021/09/03 07:02

A 回答 (1件)

>>ERROR 1242 (21000): Subquery returns more than 1 row



このエラーは、サブクエリーが最大で 1 行しか返す必要がないにもかかわらず、複数の行を返すステートメントで発生します。

ということがネットで検索すると1秒でわかりました。
    • good
    • 1
この回答へのお礼

ありがとうございます。
今ググっています^^

お礼日時:2021/09/01 06:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す