在mysql中获取不同的记录后应用限制10

时间:2011-11-16 12:44:31

标签: php mysql zend-framework

在MySQL表中,我想用 DISTINCT 值取10条记录。

我正在使用Zend Framework。

$select = $this->getAdapter()->select()
                    ->from('table', 'column')->group('column')
                    ->limit(10, 0);

这是上述代码生成的查询。

  

SELECT table.column FROM   表GROUP BY列LIMIT 10

这里发生的是MySQL首先获取10条记录,然后应用该组。最后,我只获得了7条记录。

如何首先应用 DISTINCT ,然后从中获取10条记录?

5 个答案:

答案 0 :(得分:1)

针对表测试SQL - MySQL最后应用limit,所以不执行你所说的。例如,对抗

a0 a1
 1  1
 2  1
 3  2
 4  2

并做select A.a1 from A group by a1 limit 2。你应该看到1,2,而不是1,1 [我想说这是'评论'而不是'答案',但不能这样做

答案 1 :(得分:0)

我不是百分之百确定你要做什么。

但是,如果我正确地阅读它,您需要具有特定标准的10条记录,然后应用该组。不是相反。

在这种情况下你不能使用WHERE吗?

  

SELECT table.column FROM table WHERE“ criteria GROUP BY列LIMIT 10

此致 麦克

答案 2 :(得分:0)

这可能会对你有帮助(我没有测试它,但我不确定它是否有效)

SELECT DISTINCT column FROM table LIMIT 10

如果它不起作用,你可以使用一个临时表(如(SELECT column FROM table) TEMP),它将选择不同的元素,然后是一个查询,它将在此表中选择前10个结果。

希望这会有所帮助:)

答案 3 :(得分:0)

在ZF中,您应该在查询链中使用 distinct()方法:

$select = $this->getAdapter()->select()
                    ->distinct()
                    ->from('table', 'column')
                    ->limit(10, 0);

答案 4 :(得分:0)

SELECT DISTINCT column
FROM table 
LIMIT 10
GROUP BY column

不知道怎么把它带进课堂......