【问题标题】:SUM using sub-query使用子查询求和
【发布时间】:2011-09-05 12:56:13
【问题描述】:

我想在 SELECT 内部使用 SELECT 来获取一些值(我已经这样做了)。
问题是,我想在mysql中显示这些数据,求和,这就是问题所在。

我不会发布原始代码,但请看这个示例。

SELECT id, (SELECT COUNT(x) FROM xyz where id=usr.id) as value_1,
(SELECT COUNT(y) FROM zyx where id=usr.id) as value_2 
FROM users AS usr

这是正确的,但我想将 value_1 和 value_2 相加。

当我这样做时

SELECT id,
(SELECT COUNT(x) FROM xyz where id=usr.id) as value_1, 
(SELECT COUNT(y) FROM zyx where id=usr.id) as value_2, 
(value_1+value_2) as my_sum_value
FROM users AS usr

我没有找到关于“value_1”和“value_2”的信息。

我知道,我可以使用

SELECT id, 
(SELECT COUNT(x) FROM xyz where id=usr.id) as value_1, 
(SELECT COUNT(y) FROM zyx where id=usr.id) as value_2, 
((SELECT COUNT(x) FROM xyz where id=usr.id) as value_1, 
(SELECT COUNT(y) FROM zyx where id=usr.id)+
(SELECT COUNT(y) FROM zyx where id=usr.id) as value_2) as my_sum_value
FROM users AS usr

但是,我必须“两次”编写所有代码。 为什么我不能使用名为“value_1”和“value_2”的“别名”? 查询后,这个值是正确的,如何获取sum值?

【问题讨论】:

标签: mysql select subquery


【解决方案1】:

试试这个

SELECT id,
    SUM(
    (SELECT COUNT(x) FROM xyz where id=usr.id), 
    (SELECT COUNT(y) FROM zyx where id=usr.id)
    ) as my_sum_value
FROM users AS usr

您不能使用这些变量,因为它们在子查询中...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多