Maison >base de données >tutoriel mysql >Que renverra MySQL si la sous-requête utilisée pour attribuer une nouvelle valeur dans la clause SET d'une instruction UPDATE renvoie plusieurs lignes ?

Que renverra MySQL si la sous-requête utilisée pour attribuer une nouvelle valeur dans la clause SET d'une instruction UPDATE renvoie plusieurs lignes ?

王林
王林avant
2023-08-27 19:13:02861parcourir

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

Dans ce cas, MySQL renverra un message d'erreur car nous savons que si vous utilisez une sous-requête pour attribuer une nouvelle valeur dans la clause SET de l'instruction UPDATE, alors elle doit renvoyer une ligne pour chaque ligne correspondante dans la mise à jour table WHERE clause.

Exemple

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)

Comme nous l'avons vu ci-dessus, la table "info" a deux lignes avec id = 5, donc lorsque nous l'utilisons dans une sous-requête, elle renverra plusieurs lignes, donc MySQL renverra un message d'erreur, comme suit :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer