我有一个系统,用户可以在其中完成两种类型的测试。我需要获取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)
我可以很高兴地使用 a 获得所有不同Test_User_Id
's的列表,UNION
如下所示:
SELECT Test_User_Id FROM Test_1_Results
UNION
SELECT Test_User_Id FROM Test_2_Results
而且我可以使用 a 轻松地对这些表之一的结果进行排序,ORDER BY Date_Of_Completion DESC
但我不知道如何使用 the 来执行此操作,UNION
或者这是否是进行的最佳方式。
最终,我希望能够将此查询包装在其他查询中,例如:
SELECT *
FROM Test_Users
WHERE Test_User_Id IN (
//The query i am asking about
)
WHERE some_criteria
但到目前为止,我在使用 a 时没有任何运气这样做,UNION
而且我不确定我做错了什么。
我尝试这样做的原因是管理员用户需要能够查看已完成测试的每个人的列表,其中最近完成的内容位于顶部。
我对 SQL 相当熟悉,但我以前从未真正使用过UNION
运算符。