Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

UPDATE 문의 SET 절에서 새 값을 할당하는 데 사용되는 하위 쿼리가 행을 반환하지 않으면 MySQL이 반환하는 것은 무엇입니까?

<시간/>

이 경우 MySQL은 SET 절에 NULL 값을 제공합니다. 다음 예는 그것을 보여줄 것입니다 -

예시

mysql> Select * from student;

+----+---------+-----------+
| Id | Name    | grade     |
+----+---------+-----------+
| 1  | Rahul   | Good      |
| 2  | Gaurav  | Good      |
| 3  | Raman   | Excellent |
| 4  | Harshit | Average   |
| 5  | Aarav   | Best      |
| 6  | Ram     | average   |
+----+---------+-----------+

6 rows in set (0.00 sec)

mysql> select * from info;

+------+-----------+
| id   | remarks   |
+------+-----------+
| 1    | Good      |
| 2    | Good      |
| 3    | Excellent |
| 4    | Average   |
| 5    | Best      |
+------+-----------+

5 rows in set (0.00 sec)

위의 두 테이블에서 우리는 'student' 테이블이 6개의 행을 가지고 있고 'grade'의 값이 'average'인 것을 볼 수 있습니다. 여기서 id =6이고 'info' 테이블은 5개의 행을 가지고 있습니다. 이제 다음 쿼리에 사용된 하위 쿼리는 SET 절에 새 값을 제공하는 행을 제공하지 않으므로 NULL 값을 삽입합니다. 다음 쿼리의 출력에서 ​​검사할 수 있습니다. -

mysql> UPDATE STUDENT SET grade = (SELECT remarks from info WHERE info.id = student.id) WHERE id = 6;
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> Select * from student;

+----+---------+-----------+
| Id | Name    | grade     |
+----+---------+-----------+
| 1  | Rahul   | Good      |
| 2  | Gaurav  | Good      |
| 3  | Raman   | Excellent |
| 4  | Harshit | Average   |
| 5  | Aarav   | Best      |
| 6  | Ram     | NULL      |
+----+---------+-----------+

6 rows in set (0.00 sec)