我目前正在设置一个表格:
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给我结果,但是如果可能的话我宁愿避免这种情况。
答案 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;
原始回答
因此,要获得“该系列的最后一期中每个系列的总数”,您需要自行加入并按系列分组以查找最大问题,然后在您加入时使用它来提取总数。
select issue as current_issue, total, series from seriesTable
natural join (SELECT series,
max(issue) as issue
FROM seriesTable
group by series) max_issues;
答案 1 :(得分:1)
您只需要特定系列的最大问题,并且还需要表格的最大总数。
我认为这就是你要找的东西:
SELECT max(issue),
(SELECT max(total)
FROM seriesTable)
FROM seriesTable
WHERE series = 'Series A'