Postgresql引用语句中的变量

Postgresql引用语句中的变量,sql,postgresql,Sql,Postgresql,我在sql中经常遇到这种情况,我也看到过这种情况,但我想总结一下何时/何时不在语句中引用新变量的情况 这不管用- 但这是真的- 如何实现场景1?您可以使用子查询 PostgreSQL: SELECT total_id, distinct_id, (total_id + distinct_id) as var FROM ( SELECT COUNT(id) AS total_id, COUNT(DISTINCT id) AS distinct_id FROM mytable ) a

我在sql中经常遇到这种情况,我也看到过这种情况,但我想总结一下何时/何时不在语句中引用新变量的情况

这不管用- 但这是真的-
如何实现场景1?

您可以使用子查询

PostgreSQL:
SELECT total_id, distinct_id, (total_id + distinct_id) as var FROM
(
    SELECT COUNT(id) AS total_id, COUNT(DISTINCT id) AS distinct_id
    FROM mytable
) as m

您可以在查询之外引用命名变量[从select countid中选择total_id作为mytablez中的total_id]。当您需要时,它是有意义的,但在上面的示例中不需要。第二个查询有什么问题?这就是您在上面的sqlvery simple用例中所做的-应用到上面,会是什么样子?您的误解可能是认为别名就像过程语言中的变量。事实并非如此。它只是决定了结果中列的名称。这正是我要找的,谢谢!
SELECT 
COUNT(id) AS total_id,
COUNT(DISTINCT id) AS distinct_id,
COUNT(id) - COUNT(DISTINCT id) AS var
FROM mytable
PostgreSQL:
SELECT total_id, distinct_id, (total_id + distinct_id) as var FROM
(
    SELECT COUNT(id) AS total_id, COUNT(DISTINCT id) AS distinct_id
    FROM mytable
) as m