我现在有一个这样的表:
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它跟踪系列(系列),以及每个系列中的发行号(问题)。除此之外,我还拥有这个表中所有条目的运行总数( total )。
我想要做的是组合两个查询,第一个用于定位给定系列中的最后一个问题编号,第二个用于始终定位表中的最后一个总数。假设我需要使用的两个查询如下所示,我只是不知道如何将它们组合到一个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),那么最好的方法是什么?我尝试过INNER JOIN和UNION,它们似乎都不起作用,但我认为我走对了路,只是使用了错误的语法。
我猜另一种选择是单独运行查询,添加到一个数组中,然后让PHP给我结果,但是如果可能的话,我宁愿避免这样做。
发布于 2013-11-10 19:35:25
原来的答案在下面,澄清后我有了另一个答案
你只需要交叉连接单行结果集和你后面的总数。
对于系列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;发布于 2013-11-10 19:35:40
您只需要特定系列的最大问题,还需要表的最大总数。
我想这就是你要找的:
SELECT max(issue),
(SELECT max(total)
FROM seriesTable)
FROM seriesTable
WHERE series = 'Series A'https://stackoverflow.com/questions/19889044
复制相似问题