gpt4 book ai didi

sql - 从具有动态 WHERE 条件的多个 cte 中选择

转载 作者:行者123 更新时间:2023-12-02 02:46:17 28 4
gpt4 key购买 nike

我有一个返回记录列表的存储过程。

在一种情况下 (type=1),这将根据页码返回前 10 条记录。

在其他情况下 (type=2),这将返回所有记录。

两种情况下选择的列相同。

我正在使用 2 个 cte 来获取所需的数据。

如何实现确定否的动态部分。所选记录的数量;对性能的影响最小。

代码蓝图

with cte1 as 
(
SELECT ....
),
cte2 as
(
SELECT ....
)
SELECT
ROW_NUMBER() OVER ( ORDER BY Col1) AS RowId,
cte1.*, cte2.PlanName
FROM
cte1
INNER JOIN
cte2 ON cte2.Id = cte1.Id
WHERE
.....\*different code here*\

谢谢

最佳答案

你可以放一个WHERE条件类似于 where (RowId <=10 and @case=1) or @case=2

您的查询应如下所示。

SELECT * 
FROM (SELECT Row_number()
OVER (
ORDER BY col1) AS RowId,
cte1.*,
cte2.planname
FROM cte1
INNER JOIN cte2
ON cte2.id = cte1.id)t
WHERE ( rowid <= 10
AND @case = 1 )
OR @case = 2

如果case=1上面的代码将根据您的 row_number() 仅返回 10 行否则它将全部返回。

关于sql - 从具有动态 WHERE 条件的多个 cte 中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742230/

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