Heim >Datenbank >MySQL-Tutorial >Was gibt MySQL zurück, wenn die Unterabfrage, die zum Zuweisen eines neuen Werts in der SET-Klausel einer UPDATE-Anweisung verwendet wird, mehrere Zeilen zurückgibt?

Was gibt MySQL zurück, wenn die Unterabfrage, die zum Zuweisen eines neuen Werts in der SET-Klausel einer UPDATE-Anweisung verwendet wird, mehrere Zeilen zurückgibt?

王林
王林nach vorne
2023-08-27 19:13:02890Durchsuche

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

In diesem Fall gibt MySQL eine Fehlermeldung zurück, da wir wissen, dass, wenn Sie eine Unterabfrage verwenden, um einen neuen Wert in der SET-Klausel der UPDATE-Anweisung zuzuweisen, für jede übereinstimmende Zeile in der Aktualisierung eine Zeile zurückgegeben werden muss Tabelle WHERE-Klausel.

Beispiel

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)

Wie wir oben gesehen haben, hat die Tabelle „info“ zwei Zeilen mit der ID = 5. Wenn wir sie also in einer Unterabfrage verwenden, werden mehrere Zeilen zurückgegeben, sodass MySQL eine Fehlermeldung wie folgt zurückgibt:

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

Das obige ist der detaillierte Inhalt vonWas gibt MySQL zurück, wenn die Unterabfrage, die zum Zuweisen eines neuen Werts in der SET-Klausel einer UPDATE-Anweisung verwendet wird, mehrere Zeilen zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen