mysql - 添加两个子查询以生成第三列

标签 mysql sql subquery

我需要从两个子查询中添加两个值并将其添加到第三列。 我可以写两次整个子查询来产生总和,但是有更好的方法吗?

SELECT 
    d.id,
    CONCAT(d.disease, '( ', d.disease_nepali, ' ) ') AS DISEASE,
    IFNULL((SELECT 
                    patients.D_O_M + patients.D_O_F
                FROM
                    patients
                WHERE
                    clinic = 22
                        AND patients.disease = p.disease),
            0) AS 'district1',
    IFNULL((SELECT 
                    patients.D_O_M + patients.D_O_F
                FROM
                    patients
                WHERE
                    clinic = 21 AND disease = p.disease),
            0) AS 'district2'
FROM
    diseases d
        LEFT JOIN
    patients p ON (d.id = p.disease AND p.district = 9
        AND p.status = 1
        AND p.report_date LIKE '2014-03%')
GROUP BY disease

最佳答案

您可以使用子选择

SELECT t.*,t.district1 + t.district2  `new_col`
FROM (
SELECT d.id, CONCAT(d.disease, '( ' ,d.disease_nepali, ' ) ') AS DISEASE, 
IFNULL((SELECT patients.D_O_M+patients.D_O_F FROM patients WHERE clinic = 22 AND     patients.disease = p.disease),0) AS `district1` , 
IFNULL((SELECT patients.D_O_M+patients.D_O_F FROM patients WHERE clinic = 21 AND disease = p.disease),0) AS `district2`
 FROM diseases d
LEFT JOIN patients p ON 
(d.id = p.disease AND p.district = 9 AND p.status = 1 AND p.report_date LIKE '2014-03%') 
GROUP BY disease
) t

关于mysql - 添加两个子查询以生成第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22222583/

相关文章:

mysql - 合并 SQL 中相似 ID 的行?

sql - 使用子选择更新 - 如何处理 NULL 值?

mysql - 无法登录MySQL

mysql - 如何将 LIKE 运算符与二进制有序时间 UUID 结合使用

php - 处理内存限制

php - 如何验证用户仅对一个文件输入一条评论? MYSQL PHP

MySQL - 无法在内部使用 SET 变量创建 View

mysql - 优化SQL : How to rewrite this query to boost performance?(使用子查询,摆脱GROUP BY?)

sql - 选择row_to_json表,错误: must appear in the GROUP BY clause or be used in an aggregate function

mysql - 子查询的 rand() 列针对 MySQL 5.7/8.0 与 MySQL 5.6 中的每个重复选择重新评估