UPDATE语句的SET子句中列顺序的重要性是什么?它对MySQL返回的结果集有很大的影响吗?

UPDATE语句的SET子句中列的顺序很重要,因为MySQL为我们提供了表达式中使用的列名的更新值。是的,它将对MySQL返回的结果集产生很大的影响。以下是一个例子,以使其清晰-

示例

在此示例中,我们有一个表“ tender”。首先,我们将在SET子句中使用“ tender_id”作为第一列,并使用“ rate”作为第二列来编写UPDATE语句,然后在“表“投标”。

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;
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';
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子句中列顺序的更改将对输出产生很大的影响。

猜你喜欢