mysql - 执行前子查询基本错误

标签 mysql sql

我不知道这个查询有什么问题,在多次尝试后我无法运行。请指出这有什么问题我该如何解决。谢谢。

   SELECT 
     cd.dr
    FROM
    (
     (SELECT SUM(cc.credit_amount) AS cr FROM cust_credit cc) cc
      UNION  
     (SELECT  SUM(cd.debit_amount) AS dr FROM cust_debit cd ) cd  
     )

错误是。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'cd ) LIMIT 0, 25' at line 7

最佳答案

您不能为 UNION 中的子查询指定别名,也不能使用别名引用子查询的结果。并且 UNION 中的列别名总是来自第一个子查询中的别名,因此您不能引用 dr

你可以做的是:

SELECT amount
FROM (
    SELECT 'cc' AS type, SUM(credit_amount) as amount FROM cust_credit
    UNION ALL
    SELECT 'cd' AS type, SUM(debit_amount) AS amount FROM cust_debit
) x
WHERE type = 'cd'

或者不使用 UNION,您可以将查询放在 SELECT 列表中。

SELECT dr AS amount
FROM (
    SELECT (SELECT SUM(credit_amount) FROM cust_credit) AS cr,
           (SELECT SUM(debit_amount) FROM cust_debit) AS dr
) x

关于mysql - 执行前子查询基本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433329/

相关文章:

php - MySQL 使用第二个表中的条件构建查询

php - symfony 2.8 : id AND uid column in same table

mysql - shell脚本不执行

c# - 使用 SQL 从多个表中获取主键数据

mysql - MySQL 中何时使用单引号、双引号和反引号

sql - select 语句中的 where 子句 - 日期时间问题

php - Mysql group_concat 查询出现错误

SQL更新查询在where子句中使用聚合函数和group by?

java - 使用 tsVector 在 NativeQuery 中设置参数

sql - ORA-00904 : invalid identifier. "TT"."H_NO":无效标识符