Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 - Fatal编程技术网

Mysql 我可以将十个类似的SQL查询合并为一个查询吗?

Mysql 我可以将十个类似的SQL查询合并为一个查询吗?,mysql,sql,Mysql,Sql,这是我的MySQL查询: SELECT ROUND(SUM(cfv.NUMBERVALUE),0) AS mysum FROM jissue ji JOIN customfieldvalue cfv ON ji.ID=cfv.ISSUE WHERE ji.pkey LIKE '%PB-%' AND cfv.customfield=11381 AND ji.issuestatus=10127; 有两个可能的cfv.customfield 11381和11382,还有五个可能的ji.issues

这是我的MySQL查询:

SELECT ROUND(SUM(cfv.NUMBERVALUE),0) AS mysum
FROM jissue ji JOIN customfieldvalue cfv ON ji.ID=cfv.ISSUE
WHERE ji.pkey LIKE '%PB-%' 
AND cfv.customfield=11381 AND ji.issuestatus=10127;
有两个可能的cfv.customfield 11381和11382,还有五个可能的ji.issuestatus 10127->10131,因此我运行了十次查询,每次更改这两个字段

是否可以将其压缩成一个查询,返回所有十个总和


编辑:我希望结果也包括空值。目前,只返回8行,因为ji.issuestatus=10128没有11381和11382的NUMBERVALUE。我希望结果还包括10128,其中11381/2的值为空。

是的,您可以在函数中使用我的sql

试试这个

SELECT ROUND(SUM(cfv.NUMBERVALUE),0) AS mysum
FROM jissue ji JOIN customfieldvalue cfv ON ji.ID=cfv.ISSUE
WHERE ji.pkey LIKE '%PB-%' 
AND cfv.customfield IN(11381,11381) AND ji.issuestatus IN (10127,10128,10129,10130,10131)    GROUP BY cfv.customfield, ji.issuestatus;
大概是这样的:

SELECT cfv.customfield, ji.issuestatus, ROUND(SUM(cfv.NUMBERVALUE),0) AS mysum
FROM jissue ji JOIN customfieldvalue cfv ON ji.ID=cfv.ISSUE
WHERE ji.pkey LIKE '%PB-%' 
AND cfv.customfield IN (11381, 11382) AND ji.issuestatus IN (10127, 10128, ..., 10131)
GROUP BY cfv.customfield, ji.issuestatus

前两列和GROUP BY子句都在那里,这样您就可以为十个不同的组合中的每一个组合求和,否则您只需要求与十个组合中的任何一个匹配的所有行的和。

sum是一个聚合函数。它会聚合使用“分组依据”定义的组中的值。所以我不太懂MySQL语法,但这是我的第一个猜测

SELECT ROUND(SUM(cfv.NUMBERVALUE),0) AS mysum,
cfv.customfield,ji.issuestatus
FROM jissue ji JOIN customfieldvalue cfv ON ji.ID=cfv.ISSUE
WHERE ji.pkey LIKE '%PB-%' 
AND cfv.customfield in (11381,11382) AND ji.issuestatus in (10127, ... , 10131)
group by cfv.customfield,ji.issuestatus
正如wumpz和Anthony Grist所说,您可以使用GROUP BY返回所有2*5的总和,而不返回缺失条目的总和。 若要返回缺失项的总和,请使用左联接。上的tableexpr1和tableexpr2之间的差异。。。和tableexpr1左连接tableexpr2打开。。。即使tableexpr2中没有相应的条目,也会输出tableexpr1中具有左连接条目的is

SELECT ji.issuestatus, cf.ID AS customfield_id, ROUND(SUM(cfv.NUMBERVALUE),0) AS mysum
FROM
    jissue ji CROSS JOIN customfield cf
    LEFT JOIN customfieldvalue cfv ON cfv.ISSUE=ji.ID AND cfv.customfield=cf.ID
WHERE
    ji.pkey LIKE '%PB-%'
    AND ji.issuestatus IN (10127,10128,10129,10130,10131)
    AND cf.ID IN IN (11381, 11382)
GROUP BY ji.issuestatus, cf.ID;

OP需要十个和而不是一个,所以我猜你在这里缺少一个组。如果你想要它在一起,那么你可以在属性中使用。如果您正在寻找cfv.customfield和ji.issuestatus的特定组合,则可以使用与您的组合相对应的OR和IN组合。这很有效,但我希望它也返回空值。目前,ji.issuestatus=10128对于11381和11382没有NUMBERVALUE。我希望结果还包括10128,11381/2的值为空。完整外部连接返回一个MySQL错误。左JOIN只给出与JOIN相同的结果。下面是我现在使用的SQL:选择cfv.customfield、ji.issuestatus、ROUNDSUMcfv.NUMBERVALUE,0作为mysum从jissue ji左键连接ji.ID=cfv.ISSUE上的customfieldvalue cfv,其中ji.pkey类似于11381、11382中的“%PB-%”和cfv.customfield,以及10127、10128、10129、10130、10176中的ji.issuestatus按cfv.customfield分组,ji.issuestatus你能告诉我到底有哪对cfv.customfield,ji.issuestatus吗?customfield-issuestatus-mysum 11381 10127 10 11381 10129 8000 11381 10130 100 11381 10176 99 11382 10127 2999 11382 10129 1000 11382 10130 90000 11382 10176 20000mysql说:1064-你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在第4行使用接近'VALUES 11381、11382 cfvcf LEFT JOIN customfieldvalue cfv ON cfv.ISSUE=j'的正确语法。因此,我想这在MySQL中是不可能的。