ID Name
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
10 J
另一张桌子是
ID Image Date
1 aa.jpg 5/17/2016
1 bb.jpg 5/20/2016
1 aa1.jpg 5/15/2016
2 1.jpg 5/17/2016
3 2.jpg 5/17/2016
3 3.jpg 5/20/2016
4 x.jpg 5/17/2016
8 tt.jpg 5/17/2016
9 ww.jpg 5/21/2016
10 21.jpg 5/17/2016
5 67.jpg 5/17/2016
6 3d.jpg 5/17/2016
7 w3.jpg 4/17/2016
7 y78.jpg 5/17/2016
为了得到这个结果,我写了下面的查询。
select t1.id,t1.name,t2.image,t2.date
from emp t1
join images t2 ON t1.id = t2.id
结果:
ID Name Images Date
2 B 1.jpg 5/17/2016
1 A bb.jpg 5/20/2016
1 A aa1.jpg 5/15/2016
1 A aa.jpg 5/17/2016
.
.
.
这是我的实际问题:
我必须添加limit 0100这样的限制功能。以我的极限0,3
所以我的期望是,如果有任何id与查询一起出现,那么所有id都应该出现。
最佳答案
我想您的要求是选择一组ID
值,在结果集中产生大约100行。LIMIT
没有意义;您只是选择结果集的不可预测子集。所以,我猜你想ORDER BY
。
首先,您需要确定您的集合中有哪些ORDER BY ID
值。这相对简单。(我正在使用ID
)。
SELECT DISTINCT id
FROM (
select t1.id
from emp t1
join images t2 ON t1.id = t2.id
order by t1.id
limit 0,5
) a
然后,将其用作子查询来限制查询。这里有一个SqlFiddle演示这个(http://sqlfiddle.com/#!9/44430d/4/0)。
select t1.id
from emp t1
join images t2 ON t1.id = t2.id
where t1.id IN (
SELECT DISTINCT id
FROM (
select t1.id
from emp t1
join images t2 ON t1.id = t2.id
order by t1.id
limit 0,5
) a
)
order by t1.id
当然,这个查询可能会产生比您的
LIMIT 0,5
更多的行:它会根据需要用额外的图像来扩充其结果集。SqlFiddle示例生成六行而不是五行(http://sqlfiddle.com/#!9/44430d/4/0)关于mysql - 联接查询与限制结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37273375/