【问题标题】:MySQL select in select query选择查询中的 MySQL 选择
【发布时间】:2021-11-19 17:29:52
【问题描述】:

有人可以帮我解决并解释我如何完成以下工作吗? : 在我的 MySQL 查询中,我想选择所有条目,其中 forwarded_to_cordroom 值为 0,并且在下一行中,我想拥有值为 1 的所有条目,基本上我可以创建 2 个相同的查询,唯一的区别是 WHERE子句 (where forwarded_to_cordroom = 1 , where forwarded_to_cordroom = 0) ,我考虑在一个查询中执行此操作,但我尝试过的操作出现以下错误:

SELECT
        COUNT(DISTINCT o.order_id) as count,
        (SELECT o.forwarded_to_cordroom WHERE o.forwarded_to_cordroom = 1)
FROM
        `orders_articles` o
LEFT JOIN orders oo ON
        o.order_id = oo.order_id
WHERE
        (
            oo.finished_order_date IS NULL OR oo.finished_order_date >= '2021-09-27'
        ) AND oo.order_date <= '2021-09-27'

结果:

#1140 - 在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #2 包含非聚合列 'o.forwarded_to_cordroom';这是 与 sql_mode=only_full_group_by 不兼容

我也尝试过以各种方式更改子选择(有和没有连接等),但没有成功,总是同样的错误。

我不想关闭此模式,我认为这不是目的,我可以通过一些帮助来修复我的查询。

最好的问候

【问题讨论】:

    标签: mysql sql select


    【解决方案1】:

    使用条件聚合:

    SELECT COUNT(DISTINCT o.order_id) AS count,
           COUNT(CASE WHEN o.forwarded_to_cordroom = 1 THEN 1 END) AS count_1,
           COUNT(CASE WHEN o.forwarded_to_cordroom = 0 THEN 1 END) AS count_0
    FROM orders_articles AS o
    LEFT JOIN orders AS oo ON o.order_id = oo.order_id
    WHERE ...
    

    【讨论】:

    • 非常感谢!很有帮助
    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多