首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL 1241错误

MySQL 1241错误
EN

Stack Overflow用户
提问于 2018-04-07 10:30:31
回答 2查看 68关注 0票数 1

我有两个独立的查询,这是计算总进出额的付款为一个给定的节日。IN/OUT由ENUM值提供(见下文)。

如果我独立运行这些查询,它将根据所选的payment_type输入或输出给出正确的SUM输出。我的问题是,当我试图将它们合并到一个查询中,以便为IN/OUT创建两个单独的列时,如下所示。

我在MySQL中有错误“操作数应该包含1列”。在我做了一些研究之后,我相信子查询是错误的,但我不太确定如何解决它。

谢谢你的帮忙..。

总IN

代码语言:javascript
复制
SELECT
    SUM(`payment`.`pmt_amount`) AS `TOTAL IN`
    , `payment`.`pmt_type`
    , `festival`.`id_festival`
FROM
    payment
    INNER JOIN festival
        ON (`payment`.`id_festival` = `festival`.`id_festival`)
WHERE (`payment`.`pmt_type` LIKE '%IN'
    AND `festival`.`id_festival` = 1);

然后完全消失

代码语言:javascript
复制
SELECT
    SUM(`payment`.`pmt_amount`) AS `TOTAL OUT`
    , `payment`.`pmt_type`
    , `festival`.`id_festival`
FROM
    payment
    INNER JOIN festival
        ON (`payment`.`id_festival` = `festival`.`id_festival`)
WHERE (`payment`.`pmt_type` LIKE '%OUT'
    AND `festival`.`id_festival` = 1);

组合

代码语言:javascript
复制
SELECT
  festival.id_festival,
  payment.pmt_amount,
  payment.pmt_type,
  (SELECT
      payment.pmt_type,
      SUM(payment.pmt_amount) AS `TOTAL OUT`
    FROM payment
    WHERE payment.pmt_type LIKE '%OUT'),
  (SELECT
      payment.pmt_type,
      SUM(payment.pmt_amount) AS `TOTAL IN`
    FROM payment
    WHERE payment.pmt_type LIKE '%IN')
FROM payment
  INNER JOIN festival
    ON payment.pmt_amount = festival.id_festival
WHERE festival.id_festival = 1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-07 10:40:36

您可能只想在这里使用条件聚合:

代码语言:javascript
复制
SELECT
    f.id_festival,
    SUM(CASE WHEN p.pmt_type = 'Payment IN'  THEN p.pmt_amount ELSE 0 END) AS `TOTAL IN`,
    SUM(CASE WHEN p.pmt_type = 'Payment OUT' THEN p.pmt_amount ELSE 0 END) AS `TOTAL OUT`
FROM festival f
INNER JOIN payment p
    ON p.id_festival = f.id_festival
WHERE f.id_festival = 1
GROUP BY
    f.id_festival;

请注意,您的查询只查看一个节日,但是正确的表达方式是通过GROUP BY,即使我们只想在输出中保留一个组。

票数 1
EN

Stack Overflow用户

发布于 2018-04-07 10:34:53

您的子查询必须返回only one column,但是您的查询正在返回two column,这是错误的,请尝试在下面提到查询:

代码语言:javascript
复制
SELECT
  festival.id_festival,
  payment.pmt_amount,
  payment.pmt_type,
  (SELECT
      SUM(payment.pmt_amount) AS `TOTAL OUT`
    FROM payment
    WHERE payment.pmt_type LIKE '%OUT') AS `TOTAL OUT`,
  (SELECT
      SUM(payment.pmt_amount) AS `TOTAL IN`
    FROM payment
    WHERE payment.pmt_type LIKE '%IN') AS `TOTAL IN`
FROM payment
  INNER JOIN festival
    ON payment.pmt_amount = festival.id_festival
WHERE festival.id_festival = 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49706384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档