Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将两个SQL查询合并为一个_Mysql_Sql_Select_Count - Fatal编程技术网

Mysql 将两个SQL查询合并为一个

Mysql 将两个SQL查询合并为一个,mysql,sql,select,count,Mysql,Sql,Select,Count,如何在一个查询中执行这两个查询,以便它显示具有2个以上值的eid,并同时显示其eid select eid, count(Edited_by.eid) from Edited_by group by eid; select Editor.eid from Editor where ( select count(*) from Edited_by where Edited_by.eid=Editor.eid ) > 2; 更新 HAVING子句中的谓词可以对

如何在一个查询中执行这两个查询,以便它显示具有2个以上值的eid,并同时显示其eid

select eid, count(Edited_by.eid)
from Edited_by
group by eid;


select Editor.eid  
from Editor 
where ( select count(*) 
    from Edited_by 
    where Edited_by.eid=Editor.eid ) > 2;
更新


HAVING
子句中的谓词可以对聚合表达式进行操作。我想你可能在寻找这样的东西:

SELECT t.eid
     , COUNT(t.eid) AS cnt
  FROM Edited_by t
 GROUP BY t.eid
HAVING COUNT(t.eid) > 2

哎呀。我完全没有注意到这两个查询引用了两个不同的表

要同时引用
编辑器
表,可以将上面的查询用作内联视图

SELECT c.eid                  AS edited_by_eid
     , c.cnt                  AS cnt
     , IF(c.cnt>2,e.Eid,NULL) AS editor_eid
  FROM Editor e
  JOIN ( SELECT t.eid
              , COUNT(t.eid) AS cnt
           FROM Edited_by t
          GROUP BY t.eid
       ) c
    ON c.eid = e.Eid

跟进

Q:“我想通过运行一个查询来获得两个查询的结果。”

A:我不太明白你到底想要实现什么

要返回两个单独的结果集,需要运行两个单独的语句。MySQL可以从一个存储过程返回多个结果集,例如,一个过程可以执行这两个查询。客户端可以处理两个结果集(如果客户端接口库中支持并启用了这两个结果集),这将是一个“单语句”(
调用my_过程;

如果要连接两个单独查询的结果,可以使用UNION ALL set运算符。通常,我会返回一个鉴别器列来区分哪个查询返回了哪些行。为此,两个查询之间的列数和每列的数据类型必须匹配

在您给出的示例中,来自编辑器表的查询需要返回一个伪整数类型列,以便连接两个结果

SELECT t.eid
     , COUNT(Edited_by.eid) AS cnt
  FROM Edited_by t
 GROUP BY t.eid
 UNION ALL
 SELECT e.eid
      , 0 AS cnt
   FROM Editor e
  WHERE ( SELECT COUNT(*)
            FROM Edited_by c
           WHERE c.eid=e.eid 
        ) > 2

您的第一个查询似乎有效。我不需要精确的2来连接。。但是我想通过运行一个查询来获得两个查询的结果。