[英]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.