在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条记录?
答案 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
不知道怎么把它带进课堂......