2

我目前有一个这样的表:

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

它跟踪系列(series),以及每个系列中的问题编号(issue)。除此之外,我还有此表中所有条目的运行总数(总数)。

我想做的是结合两个查询,第一个用于定位给定系列中的最后一个问题编号,第二个用于始终定位表中的最后一个总数。大概我需要使用的两个查询如下,我只是不明白如何最好地将它们组合成一个选择查询:

要找到给定系列的最后一期:

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),那么最好的方法是什么?我已经尝试过INNER JOINUNION但似乎都不起作用,但是我认为我走在正确的轨道上,只是使用了错误的语法。

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

4

2 回答 2

2

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

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

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;

sql小提琴

原始答案

因此,要获得“截至该系列最后一期的每个系列的总数”,您需要自行加入并按系列分组以找到最大问题,然后在加入时使用它来提取总数。

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

sql小提琴

于 2013-11-10T11:35:25.487 回答
1

您只需要特定系列的最大问题,还需要表格的最大总数。

我认为这就是您要寻找的东西:

SELECT max(issue), 
(SELECT max(total) 
    FROM seriesTable) 
    FROM seriesTable 
    WHERE series = 'Series A'
于 2013-11-10T11:35:39.630 回答