20240410sql查询学习_1

需求:查看合同信息表里面有多少合同编号是重复的

SELECT 合同编号, COUNT(*)
FROM 合同信息表
GROUP BY 合同编号
HAVING COUNT(*) > 1;

结果:

数量太多

需求:列数太多,怎样看具体有多少个

SELECT COUNT(*) AS total
FROM (
    SELECT 合同编号, COUNT(*) AS duplicate_count 
    FROM 合同信息表 
    GROUP BY 合同编号 
    HAVING COUNT(*) > 1
) AS duplicate_contracts;

结果:

总结:

在 SQL 中,通常情况下,内部查询(也称为子查询)的结果集必须要有一个别名,这样外部查询才能引用它。这是因为外部查询需要知道如何引用内部查询返回的结果集。

在上面的例子中,内部查询是一个带有 COUNT(*) AS duplicate_count 别名的查询。这个别名是必需的,因为外部查询需要引用这个列来执行 COUNT(*) 操作。如果没有为内部查询提供别名,外部查询将无法识别内部查询返回的列,并且会产生错误。

另外,如果您不想为内部查询提供别名,您也可以在外部查询中直接使用内部查询的结果,而无需引用它的列。例如:

SELECT COUNT(*) AS total
FROM (
    SELECT 合同编号 
    FROM 合同信息表 
    GROUP BY 合同编号 
    HAVING COUNT(*) > 1
) AS duplicate_contracts;

在这个修改后的查询中,内部查询仅返回合同编号,而外部查询只需要知道内部查询返回的结果集,而不需要引用它的列。因此,您可以不给内部查询提供别名。

总的来说,提供别名可以让查询更加清晰易懂,但在某些情况下也可以不提供。

posted @ 2024-04-10 10:02  燕子去了  阅读(9)  评论(0编辑  收藏  举报

Powered by .NET 8.0 on Kubernetes

我会翻山越岭,到每一个我想去的地方

...