MySQL 子查询出错

Posted

技术标签:

【中文标题】MySQL 子查询出错【英文标题】:Error with MySQL Subquery 【发布时间】:2015-09-28 14:01:46 【问题描述】:

我有一个 mysql 查询来生成一个显示两列的视图,这两列是子查询,但由于某种原因我得到了错误。

SELECT 
(SUM(cards_required) FROM `orders` WHERE statuses = 1) As Count,
(SUM(cards_required) FROM `orders` WHERE statuses = 2) As Count
FROM `orders` WHERE user_id = 1

错误信息

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 near 'FROM orders WHERE statuses = 1) As Count, (SUM(cards_required) 来自第 3 行的订单

【问题讨论】:

没有看到任何错误信息 这就是我的想法@amdixon #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 'FROM orders WHERE statuses = 1) As Count, (SUM(cards_required) FROM orders ' 附近使用正确的语法 好吧,你有多个 where 子句和 from 子句 - 为什么? 【参考方案1】:

您使用的语法不太正确。您可以使用IF 有条件地求和:

SELECT 
SUM(IF(statuses = 1,cards_required,0)) As status_1,
SUM(IF(statuses = 2,cards_required,0)) As status_2
FROM `orders` WHERE user_id = 1

【讨论】:

哇,好用!我通常在 SQL 中工作似乎有比我想象的更多的差异!

以上是关于MySQL 子查询出错的主要内容,如果未能解决你的问题,请参考以下文章

Hive 子查询出错 - 不支持的子查询表达式

使用子查询时出错

尝试将子表单记录源设置为 sql 查询时出错

使用子查询对房间价格求和时出错

尝试使用子查询计算时差时出错

MySQL子查询(六)