UPDATE语句中SET子句中列的顺序的重要性是什么?在MySQL返回的结果集中,它是否会产生很大的差异?

UPDATE语句中SET子句中列的顺序的重要性是什么?在MySQL返回的结果集中,它是否会产生很大的差异?

在UPDATE语句的SET子句中,列的顺序很重要,因为MySQL会在表达式中使用的列名上提供更新后的值。是的,它会在MySQL返回的结果集中产生很大的差异。以下是一个示例,以便更清楚地理解它-

阅读更多:MySQL 教程

示例

在这个例子中,我们有一个名为”tender”的表格。首先,我们将使用”tender_id”作为第一个列,”rate”作为SET子句中的第二个列编写UPDATE语句,然后我们将编写使用’ rate ‘作为第一列和’tender_id’作为第二列的UPDATE语句在表”tender”上。

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 200       | ABC     | 1000 |
| 300       | ABD     | 6000 |
| 301       | ABE     | 7000 |
| 302       | ABF     | 3500 |
| 303       | ABG     | 3600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

mysql> UPDATE tender SET tender_id = tender_id + 100, rate = tender_id * 4 WHERE tender_id = 200;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

上述查询将首先更新“tender_id”的值,然后根据“tender_id”的新值更新“rate”的值。 如下图所示,可以在MySQL返回的结果集中观察到-

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 300       | ABC     | 1200 |
| 300       | ABD     | 6000 |
| 301       | ABE     | 7000 |
| 302       | ABF     | 3500 |
| 303       | ABG     | 3600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

mysql> UPDATE tender1 SET rate = tender_id * 4, tender_id = tender_id + 200 WHERE company = 'ABD';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0

现在,以上查询将首先根据“tender_id”的旧值更新“rate”的值,然后更新“tender_id”的值。 如下图所示,可以在MySQL返回的结果集中观察到 –

mysql> Select * from tender;

+-----------+---------+------+
| tender_id | company | rate |
+-----------+---------+------+
| 300       | ABC     | 1200 |
| 500       | ABD     | 1200 |
| 301       | ABE     | 7000 |
| 302       | ABF     | 3500 |
| 303       | ABG     | 3600 |
+-----------+---------+------+

5 rows in set (0.00 sec)

通过更改SET子句中列的顺序,可以看出其在输出中产生的差异。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程