sql - 三个联表,需要一个查询响应
问题描述
我已经为这个查询苦苦挣扎了很长时间,并且非常感谢任何建议。给定以下 SQL 示例表:
CREATE TABLE #Table1
(
[First] VARCHAR(10),
[Last] VARCHAR(10),
[Priority] INT
)
INSERT INTO #Table1 ([First], [Last], [Priority])
VALUES ('My', 'Name', '1'), ('Her', 'Name', '1'), ('His', 'Name', '1');
CREATE TABLE #Table2
(
[First] VARCHAR(10),
[Last] VARCHAR(10),
[Priority] INT
)
INSERT INTO #Table2 ([First], [Last], [Priority])
VALUES ('My', 'Name', '2'), ('Her', 'Name', '2'), ('His', 'Name', '2');
CREATE TABLE #Table3
(
[First] VARCHAR(10),
[Last] VARCHAR(10),
[Priority] INT
)
INSERT INTO #Table3 ([First], [Last], [Priority])
VALUES ('My', 'Name', '3'), ('Her', 'Name', '3'), ('His', 'Name', '3');
我试图从具有最高优先级的表中查询每个名称的单个记录。以下查询返回所有表中的所有名称,而不是所需的结果。
SELECT
[First], [Last], [Priority]
FROM
(SELECT [First], [Last], [Priority]
FROM #Table1
UNION ALL
SELECT [First], [Last], [Priority]
FROM #Table2
UNION ALL
SELECT [First], [Last], [Priority]
FROM #Table3) D3
ORDER BY
[Priority] DESC
查询结果不是这样需要的:
First Last Priority
------------------------
My Name 3
Her Name 3
His Name 3
My Name 2
Her Name 2
His Name 2
My Name 1
Her Name 1
His Name 1
我尝试使用 TOP 1、DISTINCT、MAX(Priority) 过滤掉优先级较低的表值。但从来没有得到以下预期的结果。
First Last Priority
------------------------
My Name 3
Her Name 3
His Name 3
提前感谢您抽出时间查看我的问题以及您可能提供的任何建议或指导。
干杯,基因
解决方案
您可以尝试使用ROW_NUMBER
窗口函数按[First]
[Last]
列生成行号,然后获取第一行。
SELECT [First], [Last], [Priority]
FROM (
SELECT [First], [Last], [Priority],ROW_number() over(partition by [First], [Last] order by Priority desc) rn
FROM
(
SELECT [First], [Last], [Priority] FROM #Table1 UNION ALL
SELECT [First], [Last], [Priority] FROM #Table2 UNION ALL
SELECT [First], [Last], [Priority] FROM #Table3
) D3
) t1
where rn = 1
推荐阅读
- c# - 如何修复 JSONUtility 中的“ArgumentException:JSON 必须表示对象类型”
- reactjs - 显示键盘时隐藏元素
- machine-learning - 神经网络中的长特征向量大小
- r - 无法在 R studio 中安装包 MicrosoftML 和 mrsdeploy
- sql - 在没有活动连接的情况下打开 Microsoft Query 文件
- c++ - 使用 {} 解决函数重载问题
- ios - 为什么我的 .storyboards 在 Xcode 11.1 中变红了?
- compression - 使用 GPU 压缩文件的程序
- php - 搜索不返回结果的查询时出现 PHP 致命错误(Woocommerce 死亡空白页)
- python - 如何使用 urllib3 捕获 http 错误 404?