gpt4 book ai didi

mysql - 用另一个表的数据更新 MySQL 表

转载 作者:可可西里 更新时间:2023-11-01 07:45:59 25 4
gpt4 key购买 nike

我读了thisthis , 但我需要进行 GROUP BY 查询以设置另一个表。

logintable 是这样的:

id | name    | login_date
------------------------
1 | michael | 2013-01-04
2 | michael | 2013-01-08
3 | mary | 2013-01-11
4 | john | 2013-01-15
5 | michael | 2013-01-19
6 | mary | 2013-01-22
7 | john | 2013-01-26

我这样查询:

SELECT * FROM logintable GROUP BY name ORDER BY id ASC

这给了我用户的首次登录日期:

1  | michael | 2013-01-04 
3 | mary | 2013-01-11
4 | john | 2013-01-15

我有另一个名为 userstable 的表,如下所示:

id | name    | last_seen_date | first_login_date
------------------------------------------------
1 | michael | 2013-02-02 |
2 | john | 2013-02-04 |
3 | mary | 2013-02-16 |

我需要用第一个结果更新 userstable 的 first_login_date 列。我怎样才能做到这一点 ?(我在 logintable 中有 75k 条记录,在 userstable 中有 10k 条记录)

最佳答案

UPDATE  userstable a
INNER JOIN
(
SELECT name, min(login_date) min_date
FROM logintable
GROUP BY name
) b ON a.name = b.Name
SET a.first_login_table = b.min_date

为了获得更快的性能,您需要在两个表的 Name 列上添加一个 INDEX。这将防止执行全表扫描,这在大型数据库中非常慢。

在表 userstable 上添加 INDEX:

ALTER TABLE usersTable ADD INDEX (Name);

为了引用完整性,通过定义FOREIGN KEY 约束使表logintable 依赖于表userstable:

ALTER TABLE loginTable ADD CONSTRAINT tb_fk
FOREIGN KEY (Name) REFRENCES usersTable (Name)

关于mysql - 用另一个表的数据更新 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com