我目前有一个这样的表格:
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 JOIN
,UNION
但似乎都没有用,但是我认为我在正确的轨道上,只是使用了错误的语法。
我猜另一种选择是分别运行查询,添加到数组中并让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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句