Mysql 限制基于列值group而不是group by接收的结果数

Mysql 限制基于列值group而不是group by接收的结果数,mysql,Mysql,下面是我查询的当前输出:从mytable中选择vans、icollaborate_id 现在我想生成一个返回相同输出但有限制的结果。 例如,如果用户指定limit=2,则输出应如下所示: 限制为2的预期输出 限制为3的预期输出 请告知。您可以使用不同的查询 从表名称中选择不同的icollaborate_id,其中icollaborate_id='10' 您可以使用不同的查询 从表名称中选择不同的icollaborate_id,其中icollaborate_id='10' 这个版本的MySQL还不

下面是我查询的当前输出:从mytable中选择vans、icollaborate_id

现在我想生成一个返回相同输出但有限制的结果。 例如,如果用户指定limit=2,则输出应如下所示:

限制为2的预期输出

限制为3的预期输出


请告知。

您可以使用不同的查询


从表名称中选择不同的icollaborate_id,其中icollaborate_id='10'

您可以使用不同的查询

从表名称中选择不同的icollaborate_id,其中icollaborate_id='10'

这个版本的MySQL还不支持“LIMIT&IN/ALL/ANY/SOME子查询”

我下面的回答是无效的,多亏戈登·林诺夫指出了这一点

我相信,如果您只需要一个查询,您需要的是:

SELECT 
     vans, icollaborate_id 
FROM 
    mytable
WHERE icollaborate_id in
    (
        SELECT distinct t2.icollaborate_id FROM mytable t2 
               ORDER BY  t2.icollaborate_id LIMIT YOUR_LIMIT
    )
subselect确定应该查看多少个不同的值,然后主查询选择包含这些值的所有行。 此查询可能非常无效,您可能需要仔细考虑。

此版本的MySQL尚不支持“LIMIT&IN/ALL/ANY/SOME子查询”

我下面的回答是无效的,多亏戈登·林诺夫指出了这一点

我相信,如果您只需要一个查询,您需要的是:

SELECT 
     vans, icollaborate_id 
FROM 
    mytable
WHERE icollaborate_id in
    (
        SELECT distinct t2.icollaborate_id FROM mytable t2 
               ORDER BY  t2.icollaborate_id LIMIT YOUR_LIMIT
    )
subselect确定应该查看多少个不同的值,然后主查询选择包含这些值的所有行。 此查询可能非常无效,您可能需要仔细考虑。

您可以通过连接来完成此操作:

编辑:

顺便说一下,以下查询可能满足您的要求:

select icollaborate_id, group_concat(vans)
from t
group by icollaborate_id
limit 3;
这会将所有货车放在逗号分隔的列表中的一行上。

您可以通过连接:

编辑:

顺便说一下,以下查询可能满足您的要求:

select icollaborate_id, group_concat(vans)
from t
group by icollaborate_id
limit 3;
这会将所有货车放在逗号分隔的列表中的一行上。

试试这个

从表_名称中选择货车,从表_名称中选择icollaborate_id,其中从表_名称限制3中选择不同的icollaborate_id中选择icollaborate_id作为t; 试试这个

从表_名称中选择货车,从表_名称中选择icollaborate_id,其中从表_名称限制3中选择不同的icollaborate_id中选择icollaborate_id作为t;

你能提供一些样本结果来说明你想要什么吗?我需要将一组icollaborate_id计数为1记录示例10是一个计数11是第二个计数你能提供一些样本结果来说明你想要什么吗?我需要将一组icollaborate_id计数为1记录示例10是一个计数11是第二个计数oops,在MySQL中使用的子查询中不能有限制。Ooops,在MySQL中使用的子查询中不能有限制。谢谢你的回答,它对我非常有用。谢谢你的回答,它对我非常有用。
SELECT vans, icollaborate_id 
FROM t join
     (select distinct icollaborate_id
      from t
      order by icollaborate_id
      limit 3
     ) tokeep
     on t.icollaborate_id = tokeep.icollaborate_id
order by icollaborate_id;
select icollaborate_id, group_concat(vans)
from t
group by icollaborate_id
limit 3;