在MySQL中组合查询

时间:2008-11-18 21:01:23

标签: mysql sql

我知道您可以使用Join语句组合多个表选择,但是否可以将这两个查询合并为一个

SELECT Statistics.StatisticID
FROM Statistics
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

这一个?

SELECT COUNT(Votes.StatisticID)
FROM Votes
WHERE Votes.StatisticID = ?

(去除绒毛)

目前我已经取得了几乎的作品。

SELECT Statistics.StatisticID, COUNT(Score.StatisticID) AS Votes
FROM `Statistics`
LEFT JOIN `Votes` AS `Score` ON `Statistics`.`StatisticID` = `Score`.`StatisticID`
ORDER BY `SubmittedTime` DESC
LIMIT 0, 10

Votes表是一个简单的StatID,UserID连接器。在我的测试用例中,它包含3行,其中两行带有StatID 5 - 1,带有StatID 2。

如果我添加一个WHERE子句,例如WHERE StatisticID = 5并且正确返回2票,我的查询将起作用。但是,如果我删除了WHERE子句,我仍然会返回一行并获得3票。

是否可以组合这些查询,或者我必须为每个结果运行第二个(显然不是更好)?

1 个答案:

答案 0 :(得分:1)

假设您想计算每个统计数据的投票数

SELECT StatisticID, COUNT(*) AS CountVotes
FROM `Votes`
GROUP BY Statistics.StatisticsID

我没有看到表格必须加入的原因。

[编辑]啊......我看到你想按统计表的提交时间订购。

SELECT Votes.StatisticID, COUNT(*) AS CountVotes
FROM `Votes` JOIN Statistics ON votes.statisticsID = Statistics.StatisticsID
GROUP BY Statistics.StatisticsID
ORDER BY Statistics.SubmittedTime