繁体   English   中英

获取最新的行并将其链接到另一个表?

[英]Getting the most recent row and linking it with another table?

我正在尝试获取表的最新行

user_quiz:
+--------+-----------+-------------+-------------------+------------+
|quiz_id |userid     | module_id   |number_of_questions| user_score |     
+--------+-----------+-------------+-------------------+-------- ---+
|    1   |  1        |      1      |        5          |     5      |
|    2   |  2        |      2      |        10         |     9      |
|    3   |  1        |      1      |        10         |     9      |
+--------+-----------+-------------+-------------------+------------+

我用过查询:

SELECT * FROM user_quiz WHERE userid = 1 ORDER BY quiz_id DESC LIMIT 1

正确检索最后一行。 但是我想将module_id与另一个表链接:

    module:
    +---------+------------+
    |module_id|module_name |    
    +---------+------------+
    |    1    |  Forces    | 
    |    2    | Electricity|   
    +---------+------------+

并获取模块名称。

查询结果将用于打印用户最近的测验:

Most recent quiz: Forces - Number of questions: 10 - User Score: 9

仅使用一个查询就能做到吗?

您只需要一个JOIN

SELECT uq.*, m.module_name
FROM user_quiz uq JOIN
     modules m
     ON uq.module_id = m.module_id
WHERE uq.userid = 1
ORDER BY uq.quiz_id DESC
LIMIT 1;

一个更简单的查询来达到相同的效果是

SELECT 
     user_quiz.quiz_id, 
     user_quiz.number_of_questions, 
     user_quiz.user_score, 
     modules .module_name
FROM user_quiz JOIN modules
     ON user_quiz.module_id = modules.module_id
WHERE user_quiz.userid = 1
ORDER BY user_quiz.quiz_id DESC
LIMIT 1

如果要为所有用户获得相同的结果,则可以使用更复杂的查询

SELECT
    user_quiz_virtual_table.userid,
    user_quiz_virtual_table.quiz_id, 
    user_quiz_virtual_table.number_of_questions, 
    user_quiz_virtual_table.user_score, 
    modules.module_name
FROM (
    SELECT 
      user_quiz.userid
      user_quiz.quiz_id, 
      user_quiz.module_id
      user_quiz.number_of_questions, 
      user_quiz.user_score
    FROM user_quiz
    ORDER BY user_quiz.quiz_id DESC
    GROUP BY userid
) AS user_quiz_virtual_table
JOIN modules ON user_quiz_virtual_table.module_id = modules.module_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM