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
.
.
.
这是我的实际问题: 我必须添加限制功能,如限制0,100。在我的限制0,3 所以我的期望是,如果任何id随查询而来,那么所有id都应该来。
答案 0 :(得分:1)
我猜您的要求是选择一组ID
值,这些值会在结果集中产生大约100行。
LIMIT
, ORDER BY
毫无意义;你只是选择一个不可预测的结果集子集。所以,我猜你想要ORDER BY ID
。
首先,您需要确定您的集合中有哪些ID
值。那相对简单。 (我正在使用LIMIT 0,5
)。
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
更多的行:它会根据需要使用额外图像扩充其结果集。 SqlFiddle示例产生六行而不是五行(http://sqlfiddle.com/#!9/44430d/4/0)