gpt4 book ai didi

mysql - 在子查询中选择两列

转载 作者:行者123 更新时间:2023-11-29 01:29:50 25 4
gpt4 key购买 nike

我有以下 SQL 语句:

SELECT  Office, 
COUNT(Office) As Tot_Part,
(SELECT Office, COUNT(Office)
FROM trespondent
WHERE completion_status= 'Started'
OR completion_status = 'Complete'
GROUP BY Office ORDER BY Office
) As Total_Resp
FROM trespondent
WHERE completion_status <> 'New'
GROUP BY Office
ORDER BY Office

我遇到的问题是方括号中的 SELECT 语句 - 我想要做的是带回 total 总体人员,然后是 total 已开始或已完成的人。

1241 - Operand should contain 1 column(s)

如果我包含 COUNT(Office),则两列不匹配。

如何改进我的查询以获得我正在寻找的结果集?

Office    Tot   Resp
London 20 2
Leeds 30 17

最佳答案

选择列表中的任何子查询都必须是标量子查询,即它必须具有一列和一行。

但在这种情况下,您根本不需要子查询:

SELECT 
Office,
COUNT(Office) As Tot_Part,
SUM(completion_status IN ('Started', 'Complete')) AS Total_Resp
FROM trespondent
WHERE completion_status <> 'New'
GROUP BY Office
ORDER BY Office

诀窍在于,值为 1 或 0 的 SUM() 与值为 1 的行的 COUNT() 相同。MySQL 将 bool 表达式视为 1 或 0。

关于mysql - 在子查询中选择两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19304873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com