1

以下是我的查询的当前输出:SELECT vans,icollaborate_id FROM mytable;

+==========+=====================+
|   vans   |   icollaborate_id   |
+==========+=====================+
| sachin   |   10                |
| cricket  |   10                |
| chess    |   10                |
| male     |   11                |
| 31-40    |   11                |
| sachin   |   11                |
| female   |   12                |
| tennis   |   12                |
| 21-30    |   12                |
+----------+---------------------+

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

限制为 2 的预期输出

+==========+=====================+
|   vans   |   icollaborate_id   |
+==========+=====================+
| sachin   |   10                |
| cricket  |   10                |
| chess    |   10                |
| male     |   11                |
| 31-40    |   11                |
| sachin   |   11                |
+----------+---------------------+

限制为 3 的预期输出

+==========+=====================+
|   vans   |   icollaborate_id   |
+==========+=====================+
| sachin   |   10                |
| cricket  |   10                |
| chess    |   10                |
| male     |   11                |
| 31-40    |   11                |
| sachin   |   11                |
| female   |   12                |
| tennis   |   12                |
| 21-30    |   12                |
+----------+---------------------+

请指教。

4

4 回答 4

1

您可以使用以下命令执行此操作join

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;

这会将所有vans内容放在逗号分隔列表中的一行上。

于 2013-08-30T14:58:31.443 回答
0

您可以使用 DISTINCT 查询

SELECT DISTINCT icollaborate_id FROM table_name WHERE icollaborate_id='10';

于 2013-08-30T14:30:59.620 回答
0

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

我在下面的回复是无效的,感谢 Gordon Linoff 指出这一点。

我相信您正在寻找的(如果您只想要 1 个查询)是这样的:

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
    )

子选择确定它应该查看多少不同的值,然后主查询选择包含这些值的所有行。此查询可能非常低效,您可能需要仔细考虑这一点。

于 2013-08-30T14:49:07.657 回答
0

尝试这个

SELECT vans,icollaborate_id FROM table_name WHERE icollaborate_id IN( SELECT * FROM (SELECT DISTINCT icollaborate_id FROM table_name LIMIT 3) as t);

于 2013-08-30T15:01:30.307 回答