2016-05-17 3 views
2
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 Так что я ожидаю, что если какой-либо идентификатор поступит с запросом, значит, все идентификаторы должны появиться.

+0

select t1.id, t1.name, t2.image, t2.date from emp t1 join images t2 ON t1.id = t2.id limit 100; это то, что вы хотите? – Priyanshu

+0

Трудно понять, чего вы хотите, без ожидаемого результата, вы хотите ограничить до 100 идентификаторов? а не 100 записей? – sagi

+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)

Смежные вопросы