我想在我的MySQL数据库中为数组中的每个值获取一行。我想要做的是获得最近投票的帖子。该votes
表具有以下结构为每个数组值选择一行
| id | postid | voter | vote type | time |
|====|========|=======|===========|============|
| 1 | 1 | 1 | 1 | 1445389824 |
| 2 | 2 | 6 | 1 | 1445408529 |
| 3 | 1 | 5 | 2 | 1445435978 |
我想选择是最近投票,在他们表决顺序的职位。因此,例如,因为按时间从最大到最小排列的投票的ID是3,2,1,我想选择帖子ID 1,2,1。但是,因为出现两次,我只想选择第一个,所以最终结果将是1,2。
该表格将会非常非常大,因此选择每个帖子ID然后使用php将其修剪到理想的数组似乎不是一个非常好的主意。
此外,只应选择数组中的帖子。例如,选择所有的职位,而不忽略重复将
SELECT `postid`
FROM `votes`
WHERE `postid` IN ($posts)
ORDER BY `time` DESC
但是,通过使用这种方法,我将不得不摆脱使用PHP,这似乎将是非常密集的重复条目。
我还想在列表中的每个帖子上选择号码。我可以在单独的查询中完成此操作,但在一个查询中执行此操作可能会更快。因此,例如
SELECT COUNT(`id`)
FROM `votes`
WHERE `postid` IN ($posts)
ORDER BY `time` DESC
会选择所有给出的职位的选票。相反,我希望它为每个帖子选择一个投票数组,或者可以将其转换为该数组。
是否有任何MySQL操作符允许我选择数组中包含的每个帖子上的投票数,并在最近的帖子被投票时排序?在上表中,因为有2票对1后,并在后2投1中,结果将是
array("1" => 2, "2" => 1)
有'DISTINCT postid',这将使你只有一个ID后面,而不是'1,2,1',你会得到' 1,2'。我相信这个命令也会保留下来。 –
东西sort've是这样的:'SELECT DISTINCT id,COUNT(*)AS num_votes FROM votes ORDER BY id,\'time \'DESC GROUP BY id' –
那么group by postid如同说@trincot? –