ホームページ >データベース >mysql チュートリアル >UPDATE ステートメントの SET 句に新しい値を割り当てるために使用されたサブクエリが複数の行を返した場合、MySQL は何を返しますか?

UPDATE ステートメントの SET 句に新しい値を割り当てるために使用されたサブクエリが複数の行を返した場合、MySQL は何を返しますか?

王林
王林転載
2023-08-27 19:13:02899ブラウズ

如果用于在 UPDATE 语句的 SET 子句中分配新值的子查询返回多行,MySQL 将返回什么?

この場合、MySQL はエラー メッセージを返します。これは、サブクエリを使用して UPDATE ステートメントの SET 句に新しい値を割り当てる場合、その値を更新する必要があることがわかっているためです。 WHERE 句は、テーブル内の一致する行ごとに返されます。

Example

mysql> insert into info(id, remarks) values(5,'average');
Query OK, 1 row affected (0.06 sec)

mysql> select * from info;
+------+-----------+
| id   | remarks   |
+------+-----------+
| 1    | Good      |
| 2    | Good      |
| 3    | Excellent |
| 4    | Average   |
| 5    | Best      |
| 5    | average   |
+------+-----------+
6 rows in set (0.00 sec)

上で見たように、「info」テーブルには id = 5 の 2 つの行があるため、サブクエリで使用すると複数の行が返されるため、MySQL次のようなエラー メッセージが返されます -

mysql> UPDATE STUDENT SET grade = (SELECT remarks from info WHERE info.id = student.id) WHERE id = 5;
ERROR 1242 (21000): Subquery returns more than 1 row

以上がUPDATE ステートメントの SET 句に新しい値を割り当てるために使用されたサブクエリが複数の行を返した場合、MySQL は何を返しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。