简体   繁体   English

MySQL:如何将别名委托给子查询的子查询?

[英]MySQL: how to delegate alias into subquery of subquery?

How can I delegate my DV_ID or DV.ID into the second (deeper) subquery? 如何将DV_ID或DV.ID委托给第二个(更深的)子查询? Is it possible? 可能吗? (If I'd have just one level of nesting it would work.) (如果我只有一层嵌套,它将起作用。)

SELECT DV.ID DV_ID, (
SELECT COUNT(*) FROM (SELECT * MYTABLE VSV
WHERE VSV.ID = DV_ID //DV_ID is not seen...
GROUP BY VSV.ID) A ) B
FROM MYTABLE2 DV

When you use an alias in SELECT field list is not seen in the subquery. 在SELECT字段中使用别名时,在子查询中看不到列表。 You can use DV.ID (DV is alias of your table). 您可以使用DV.ID(DV是表的别名)。

In your example: 在您的示例中:

SELECT DV.ID DV_ID

you can replace your output alias with a string, like this: 您可以将输出别名替换为字符串,如下所示:

SELECT DV.ID "Hi my dear"

but is not correct read that information inside other part of query 但不正确,请在查询的其他部分中读取该信息

You can rewrite your particular query as: 您可以将特定查询重写为:

SELECT DV.ID as DV_ID,
       (SELECT COUNT(DISTINCT VSV.ID)
        FROM MYTABLE VSV
        WHERE VSV.ID = DV.ID //DV_ID is not seen...
       ) as B
FROM MYTABLE2 DV;

(NOTE: If VSV.ID can take on NULL values, the expression would be SELECT COUNT(DISTINCT vsv.ID) + MAX(vsv.id is null) ). (注意:如果VSV.ID可以采用NULL值,则表达式将为SELECT COUNT(DISTINCT vsv.ID) + MAX(vsv.id is null) )。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM