结合同一个表中的两个MySQL查询

时间:2013-11-10 11:15:53

标签: 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

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

我想要做的是组合两个查询,第一个用于查找给定系列中的最后一个发行号,第二个用于始终找到表中的最后一个总数。据推测,我需要使用的两个查询如下,我只是看不出如何将它们组合成一个选择查询:

查找给定系列的最后一期:

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给我结果,但是如果可能的话我宁愿避免这种情况。

2 个答案:

答案 0 :(得分: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 fiddle

原始回答

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

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 fiddle

答案 1 :(得分:1)

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

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

SELECT max(issue), 
(SELECT max(total) 
    FROM seriesTable) 
    FROM seriesTable 
    WHERE series = 'Series A'
相关问题