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

4
在MySQL表中,我想要获取10条具有DISTINCT值的记录。
我正在使用Zend框架。
$select = $this->getAdapter()->select()
                    ->from('table', 'column')->group('column')
                    ->limit(10, 0);

以下是以上代码生成的查询语句:

SELECT table.column FROM table GROUP BY column LIMIT 10

MySQL首先获取10条记录,然后再应用分组操作。最终,只返回了7条记录。

如何先使用DISTINCT去重,然后再获取其中的10条记录呢?

5个回答

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。虽然我本意想将此信息作为“注释”而非“答案”,但无法实现此操作。

是的,你说得对。实际上我把结果传递给了另一个查询。那里被过滤成了7条记录。在原始查询中,我只得到了10个不同的值。 - Raj

0

我不太确定您想要做什么。

但是如果我理解正确,您需要先使用某些条件获取10条记录,然后再进行分组。而不是相反的顺序。

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

SELECT table.column FROM table WHERE "条件" GROUP BY column LIMIT 10

祝好, Mike


0

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

SELECT DISTINCT column FROM table LIMIT 10

如果它不起作用,您可以使用临时表(例如(SELECT column FROM table) TEMP),该表将选择不同的元素,然后查询将前十个结果选择到此表中。
希望这能帮到您 :)

0
在ZF中,您应该将distinct()方法用于您的查询链中:
$select = $this->getAdapter()->select()
                    ->distinct()
                    ->from('table', 'column')
                    ->limit(10, 0);

0
SELECT DISTINCT column
FROM table 
LIMIT 10
GROUP BY column

不确定如何将其转换为类...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接