限制从联合查询返回的行的最有效方法 - TSQL

Most efficent way to limit rows returns from union query- TSQL(限制从联合查询返回的行的最有效方法 - TSQL)
本文介绍了限制从联合查询返回的行的最有效方法 - TSQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有一个简单的存储过程,其中包含两个与联合连接的查询:

I have a simple stored proc with two queries joined with a union:

select name as 'result'
from product
where...

union

select productNum as 'result'
from product
where...

我想将此限制在前 10 个结果中.

I want to limit this to the TOP 10 results.

如果我将 TOP 10 放在每个单独的查询中,我总共会得到 20 个结果.

If I put TOP 10 in each seperate query I get 20 results total.

将总结果限制为 10 的最有效方法是什么?我不想在每个都做前 5 名,因为我可能最终会遇到类似 7 个名字"的情况.和 3 个产品编号".

What is the most efficient way to limit total results to 10? I dont want to do TOP 5 in each because I may end up in a situation where I have something like 7 "names" and 3 "productsNumbers".

推荐答案

WITH Results (Result)
AS
(

select name as 'result'
from product
where...

union

select productNum as 'result'
from product
where...
)

SELECT TOP 10 * FROM Results

常用表表达式

这篇关于限制从联合查询返回的行的最有效方法 - TSQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Creating table with T-SQL - can#39;t see created tables in Object explorer(使用 T-SQL 创建表 - 在对象资源管理器中看不到创建的表)
How to check if VARCHAR strings are (not) hexadecimal?(如何检查 VARCHAR 字符串是否为(非)十六进制?)
Arithmetic overflow error converting IDENTITY to data type int(将 IDENTITY 转换为数据类型 int 的算术溢出错误)
Where clause if there are multiple of the same ID(如果有多个相同的 ID,Where 子句)
Azure SQL: Invalid Object Name using Powershell#39;s quot;Invoke-sqlcmdquot; on Adventureworks(Azure SQL:使用 Powershell 的“Invoke-sqlcmd的无效对象名称在 Adventureworks 上)
How to Convert Table Data into xml format using sql with multiple sub nodes(如何使用具有多个子节点的sql将表数据转换为xml格式)