mysql - JOIN SQL 查询结果为一个

标签 mysql join union

我想在一个查询中进行多个选择,我的查询在没有最后一个 SELECT 的情况下工作,但是我有一个错误,即 Operand should contain 1 column 有人可以告诉我如何纠正吗?


SELECT (
 SELECT COUNT(*) FROM mytable WHERE TYPE = 'MSS' AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE()) 
) as TOTAL_MSS,
( 
SELECT COUNT(*) FROM mytable WHERE TYPE = 'MSS' AND S = 0 AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE())
) as MSS_S,
(
 SELECT COUNT(*) FROM mytable WHERE TYPE = 'MSS' AND S != 0 AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE())
) as MSS_F,
(
SELECT COUNT(*) as Nb ,OR as TOP FROM mytable WHERE TYPE = 'MSS'  AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE()) GROUP BY OR ORDER BY Nb DESC LIMIT 1
)

如果我分别执行它们,我会得到

TOTAL_MSS   MSS_S   MSS_F
99          12      87

Nb  TOP
78  j.r@domain.com

最佳答案

试试这个查询

SELECT 
   * 
FROM 
(SELECT 
   1 as rId,
   count(*) as TOTAL_MSS,
   sum(if(S = 0, 1, 0)) as MSS_S,
   sum(if(S <> 0, 1, 0)) as MSS_F
FROM 
   mytable
WHERE
   TYPE = 'MSS' AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE())) a
INNER JOIN
   (SELECT 
       1 as rId,
       COUNT(*) as Nb, 
       OR as TOP 
   FROM 
       mytable 
   WHERE 
       TYPE = 'MSS'  AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE()) 
   GROUP BY 
       OR 
   ORDER BY 
       Nb DESC LIMIT 1)b
 ON 
   a.rID = b.rID;

希望这有助于...

关于mysql - JOIN SQL 查询结果为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16537479/

相关文章:

MySQL - 获取属于请求结果的列名

php - 我在表单提交时将数据插入表的最佳方法是什么?

mysql - 尽管在 MySQL 4.1.25 中有效,但 MySQL 5.5 中的混合连接查询存在问题

postgresql - 合并来自两个独立数据库的结果

mysql - 如何找到mysql中某列中缺失的月份?

MYSQL 简单查询 - 需要 Union 替代方案

python - 在 mySql 中存储数组

mysql - 有关连续几天的 MySQL 组和聚合的更多信息

mysql - 我应该在 MySQL 中使用 join 来处理简单关系吗

MySQL - 对 SELECT 结果进行 UNION