我们经常有用户创建多个帐户,然后最终多次存储相同的课程活动数据。一旦发现错误,便会与我们联系,以将这些帐户合并为一个可以使用的帐户。
我一直在自残,试图弄清楚如何在MySQL中编写一个查询,该查询将把他们的活动日志合并到一个配置文件中,这样我就可以删除其他配置文件,但是仍然找不到能工作。
这些表如下所示:
CREATE TABLE user_rtab ( user_id int PRIMARY KEY, username varchar, last_name varchar, first_name varchar );
CREATE TABLE lessonstatus_rtab ( lesson_id int, user_id int, accessdate timestamp, score double, ); 发生的结果是,一个用户最终在两个或多个帐户下接受了相同的课程,同时也接受了不同的课程,然后他们希望获得所有课程状态,并希望将其分配给一个用户帐户。
谁能提供一个查询,该查询将基于用户表中的姓氏和名字字段来确定所有用户帐户,然后仅使用user或username字段将所有必要的状态迁移到一个帐户中,从而完成此任务?
问题来源于stack overflow
假设我们将user_id 2合并为1。
这将更新在2下完成的课程,而不是在1下完成的课程。
UPDATE lessonstatus_rtab SET user_id = 1 WHERE user_id = 2 AND NOT EXISTS (SELECT * FROM lessonstatus_rtab e WHERE e.lesson_id = lessonstatus_rtab.lesson_id AND user_id = 1) 剩下的所有东西都是重复的,现在可以删除:
DELETE FROM lessonstatus_rtab WHERE user_id = 2
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。