MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

UPDATEステートメントのSET句の列の順序の重要性は何ですか? MySQLによって返される結果セットに大きな違いがありますか?


MySQLは式で使用される列名の更新された値を提供するため、UPDATEステートメントのSET句の列の順序は重要です。はい、MySQLによって返される結果セットに大きな違いがあります。以下はそれを明確にするための例です-

この例では、テーブル「入札」があります。まず、SET句の最初の列として「tender_id」、2番目の列として「rate」を使用してUPDATEステートメントを記述し、次に、最初の列として「rate」、2番目の列として「tender_id」を使用して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;
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句の列の順序を変更すると、出力に大きな違いが生じます。


  1. MySQLの結果セットを指定されたものと同じにする方法は?

    これには、MySQL FIND_IN_SET()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1563    -> (    -> StudentId int,    -> StudentName varchar(20)    -> ); Query OK, 0 rows affected (0.52 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into De

  2. JAVAでMySQL接続を確立する方法は? locahostに設定するポート番号は何ですか?

    URLでポート番号3306を使用する必要があります。構文は次のとおりです- jdbc:mysql://localhost:3306 例 import java.sql.Connection; import java.sql.DriverManager; public class MySQLConnectionToJava {    public static void main(String[] args) {       String JDBCURL="jdbc:mysql://localhost:3306/sample?useSS