SQL 查询优化:连接用户练习数据和用户信息

本文将详细介绍如何优化一个 SQL 查询,将用户练习数据和用户信息关联起来。查询的目标是统计用户在特定时间段内练习的题目数量和正确题目数量。

原始 SQL 语句

select q1.device_id,university,qusetion_cnt,right_question_cnt from ((select question_practice_detail.device_id,count(question_practice_detail.device_id) as question_cnt,count(result) as right_question_cnt from question_practice_detail where date between '2021-08-01' and '2021-08-31' and result='right' and question_practice_detail.device_id=user_profile.id group by question_practice_detail.device_id) as q1),user_profile;

问题分析

这条 SQL 语句的语法是正确的,但是缺少连接条件,无法正确连接两个表。您需要根据实际情况添加一个连接条件,例如:

优化后的 SQL 语句

SELECT q1.device_id, university, question_cnt, right_question_cnt
FROM (
    SELECT device_id, COUNT(device_id) AS question_cnt, COUNT(result) AS right_question_cnt
    FROM question_practice_detail
    WHERE date BETWEEN '2021-08-01' AND '2021-08-31' AND result='right'
    GROUP BY device_id
) AS q1
INNER JOIN user_profile ON q1.device_id = user_profile.id;

优化后的 SQL 语句question_practice_detail 表和 user_profile 表通过 INNER JOIN 连接,并使用 q1.device_id = user_profile.id 作为连接条件,保证了两个表之间的关联关系,能够正确统计用户练习数据和用户信息。

总结

在编写 SQL 查询时,需要仔细检查连接条件,确保所有关联的表都能够正确连接。通过优化 SQL 语句,可以提高查询效率,保证查询结果的正确性。

SQL 查询优化:连接用户练习数据和用户信息

原文地址: https://www.cveoy.top/t/topic/otsn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录