以下是我的查询的当前输出: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 |
+----------+---------------------+
请告知。
答案 0 :(得分: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
放在以逗号分隔的列表中的单行上。
答案 1 :(得分:0)
您可以使用DISTINCT查询
SELECT DISTINCT icollaborate_id FROM table_name WHERE icollaborate_id = '10';
答案 2 :(得分:0)
此版本的MySQL尚不支持'LIMIT& IN / ALL / ANY / SOME子查询'
我的回复无效,感谢Gordon Linoff指出这一点。
我相信你要找的东西(如果你只想要一个查询)是这样的:
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
)
子选择标识它应该查看多少个不同的值,然后主查询选择包含这些值的所有行。 这个查询可能非常缺乏,您可能需要考虑这一点。
答案 3 :(得分: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);