MySQL select 在 select 查询中
MySQL select in select query
有人可以帮我解决并解释我如何才能完成以下任务吗? :
在我的 MySQL 查询中,我想要 select 所有条目,其中 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 - In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'o.forwarded_to_cordroom'; this is
incompatible with sql_mode=only_full_group_by
我也尝试过以各种方式更改子select(有和没有连接等)但没有成功,总是出现同样的错误。
我不想关闭此模式,我认为这不是目的,我可以在一些帮助下修复我的查询。
此致
使用条件聚合:
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 ...
有人可以帮我解决并解释我如何才能完成以下任务吗? : 在我的 MySQL 查询中,我想要 select 所有条目,其中 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 - In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'o.forwarded_to_cordroom'; this is incompatible with sql_mode=only_full_group_by
我也尝试过以各种方式更改子select(有和没有连接等)但没有成功,总是出现同样的错误。
我不想关闭此模式,我认为这不是目的,我可以在一些帮助下修复我的查询。
此致
使用条件聚合:
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 ...