首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >像在MySQL中使用CTE那样动态地定义一个函数

像在MySQL中使用CTE那样动态地定义一个函数
EN

Database Administration用户
提问于 2022-08-03 08:44:42
回答 1查看 126关注 0票数 1

使用CTE,可以定义仅在执行当前查询期间才存在的“on he fly”自定义表:对函数也可以这样做吗?

示例用例

我有一个具有复杂where条件的查询,必须在查询的group by部分中进行复制,所以最好将这个分组逻辑封装在自己的代码中,并在任何需要重用的地方重用,就像对CTE一样。

EN

回答 1

Database Administration用户

发布于 2022-08-03 12:29:52

不不可能。此外,通常最好避免在关系语言(如SQL )中使用函数,尤其是在谓词中,这主要是从性能角度考虑的。

相反,您可以做的是使用CTE (正如您熟悉的那样)将复杂逻辑定义一次为列,然后在WHEREGROUP BY子句中引用这些列,而不必重复逻辑。

例如:

代码语言:javascript
复制
WITH CTE AS
(
    SELECT
        Column1,
        Column2,
        Column1 + Column2 AS NewColumn,
        CASE 
            WHEN Column3 > Column4 THEN 1
            ELSE 0
        END AS IsColumn3Greater
    FROM YourTable
)

SELECT
    Column1,
    NewColumn
FROM CTE
WHERE IsColumn3Greater = 1
GROUP BY Column1, NewColumn
票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/315164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档