gpt4 book ai didi

用于从两个表中选择 ID 列和最新日期的 SQL 语法

转载 作者:行者123 更新时间:2023-12-02 20:12:41 24 4
gpt4 key购买 nike

我有一个系统,用户可以在其中完成两种类型的测试。我需要获取按最新测试完成日期排序的 DISTINCT 用户列表。

为此目的,表格也可以设置为:

Test_Users
- Test_User_Id (int)

Test_1_Results
- Test_1_Result_Id (int)
- Test_User_Id (int)
- Date_Of_Completion (datetime)

Test_2_Results
- Test_2_Result_Id (int)
- Test_User_Id (int)
- Date_Of_Completion (datetime)

我可以很高兴地使用 UNION 获取所有不同 Test_User_Id 的列表,如下所示:

SELECT Test_User_Id FROM Test_1_Results
UNION
SELECT Test_User_Id FROM Test_2_Results

我可以使用 ORDER BY Date_Of_Completion DESC 轻松对其中一个表的结果进行排序,但我不知道如何使用 UNION 执行此操作,或者如果这样甚至是最好的继续方式。

最终我希望能够将此查询包装在其他查询中,例如:

SELECT *
FROM Test_Users
WHERE Test_User_Id IN (
//The query i am asking about
)
WHERE some_criteria

但到目前为止,我在使用 UNION 时还没有成功,而且我不确定我做错了什么。

我尝试这样做的原因是管理员用户需要能够查看已完成测试的每个人的列表,并且最新完成的内容位于顶部。

我对 SQL 相当熟悉,但以前从未真正使用过 UNION 运算符。

最佳答案

这应该有效

 SELECT Test_User_Id, max(Date_Of_Completion) AS doc
FROM (
SELECT Test_User_Id, Date_Of_Completion FROM Test_1_Results
UNION ALL
SELECT Test_User_Id , Date_Of_Completion FROM Test_2_Results
) AS temptab
GROUP BY Test_User_Id
ORDER BY doc DESC

关于用于从两个表中选择 ID 列和最新日期的 SQL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897068/

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