Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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查询_Mysql_Join_Union - Fatal编程技术网

组合来自同一个表的两个MySQL查询

组合来自同一个表的两个MySQL查询,mysql,join,union,Mysql,Join,Union,我目前设置了一个表,如下所示: issue|total | series -----|--------|--------- 1 | 1 | Series A 2 | 2 | Series A 1 | 3 | Series B 3 | 4 | Series A 2 | 5 | Series B 1 | 6 | Series C 它跟踪系列,以及每个系列中的发行号。除此之外,我还有这个表中所有条目的

我目前设置了一个表,如下所示:

issue|total   | series
-----|--------|---------
1    | 1      | Series A
2    | 2      | Series A
1    | 3      | Series B
3    | 4      | Series A
2    | 5      | Series B
1    | 6      | Series C
它跟踪系列,以及每个系列中的发行号。除此之外,我还有这个表中所有条目的运行总数

我想做的是合并两个查询,第一个用于查找给定系列中的最后一个发行号,第二个用于始终查找表中的最后一个总数。我需要使用的两个查询大概如下所示,我只是不知道如何最好地将它们组合到一个select查询中:

要查找给定系列的最后一期,请执行以下操作:

SELECT issue FROM seriesTable WHERE series = 'Series A|Series B|Series C' ORDER BY issue DESC LIMIT 1
要查找条目总数,请执行以下操作:

SELECT total FROM seriesTable ORDER BY total DESC LIMIT 1
那么,如果我想参考A系列的最后一期以及3、6条参赛作品的总数,那么最好的方法是什么?我尝试过内部连接和联合,但这两种方法似乎都不起作用,但我认为我的思路是正确的,只是语法使用不正确

我想另一种选择是单独运行查询,添加到数组中,让PHP给我结果,但是如果可能的话,我宁愿避免这样做。

原始答案如下,澄清后我有另一个答案

您只需要将单行结果集与您想要的总数交叉连接

A系列

SELECT series, MAX(issue), total.total FROM seriesTable
  JOIN (SELECT total FROM seriesTable ORDER BY total DESC LIMIT 1) total
 WHERE series = 'Series A';
或者每一个系列

SELECT series, MAX(issue), total.total FROM seriesTable
  JOIN (SELECT total FROM seriesTable ORDER BY total DESC LIMIT 1) total
 GROUP BY series;
原始答案

因此,要获得该系列上一期的每个系列的总发行量,您需要自行加入并按系列分组以找到最大发行量,然后在加入时使用该值提取总发行量

select issue as current_issue, total, series from seriesTable
natural join (SELECT series, 
                     max(issue) as issue 
                FROM seriesTable 
               group by series) max_issues;

您只需要特定系列的最大发行量,还需要表的最大总计

我想这就是你想要的:

SELECT max(issue), 
(SELECT max(total) 
    FROM seriesTable) 
    FROM seriesTable 
    WHERE series = 'Series A'

您希望您的输出看起来如何?这非常简洁,但是当我运行此查询时,对于MAXissue和COUNTissue,我得到了相同的结果-即在上面的示例中,对于系列A,我得到了3,3。我要做的是得到3,6,即最后一个A系列的数字和整个表中的条目数。试试这个:选择maxissue,选择maxtotal from seriesTable from seriesTable,其中Series='Series A'从您的查询中得到了一些好主意。非常感谢+1.当我运行此查询时,我似乎在“总计”列中获取与该问题编号关联的编号。如果搜索A系列,我想得到3,6,即A系列的最终发行量和总参赛数量。如果搜索B辑,我想要2,6,即最后一期B辑加上总的条目数。这非常有效。我承认,我不明白其中的逻辑,但它似乎正是我所需要的。