簡體   English   中英

查詢以在加入另一張表時更新一張表

[英]Query to update one table while joining another table

我試圖通過內部連接另一個表(表 B)匹配它們的相等日期時間(created_at)列來更新表的列(表 A,列 = b_id)。

表A

+----+---------------------+-------+
| id |     created_at      |  b_id | 
+----+---------------------+-------+
|  1 | 2020-10-05 09:00:00 |  NULL |
+----+---------------------+-------+
|  2 | 2020-10-05 09:05:00 |  NULL |
+----+---------------------+-------+
|  3 | 2020-10-05 09:10:00 |  NULL |
+----+---------------------+-------+

表B

+----+---------------------+
| id |     created_at      |
+----+---------------------+
| 10 | 2020-10-05 09:00:00 |
+----+---------------------+
| 11 | 2020-10-05 09:05:00 |
+----+---------------------+
| 12 | 2020-10-05 09:10:00 |
+----+---------------------+

我的以下查詢有效,但我想知道是否有更有效的方法。

UPDATE A
INNER JOIN B ON A.created_at = B.created_at
SET A.b_id = B.id
WHERE A.created_at = B.created_at

您的更新很好,但您可能希望將以下索引添加到B表:

CREATE INDEX idx_b ON B (created_at, id);  -- and drop id if you're using InnoDB

這將允許 MySQL 使用created_at值在B表中進行快速查找,找到相應的id值,假設它存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM