получить первый ряд соединения - PullRequest
1 голос
/ 04 декабря 2009

У меня такой запрос:

select t1.id, t1.sample, t2.id from table t1 join table t2  
on t1.sample = t2.sample and t2.id > t1.id

Мне нужно получить первый ряд, который удовлетворяет второму условию.

Есть идеи?

Ответы [ 5 ]

3 голосов
/ 04 декабря 2009
SELECT t1.id, t1.sample, t2.id FROM table t1 JOIN TABLE t2
ON t1.sample = t2.sample AND t2.id > t1.id WHERE ROWNUM = 1
1 голос
/ 04 декабря 2009

Все возвращаемые строки будут удовлетворять обоим условиям, поэтому вам не нужно делать ничего особенного, чтобы убедиться, что второе условие выполнено.

Если вы хотите ограничить размер возвращаемых результатов до 1, добавьте WHERE ROWNUM = 1 к запросу, если он будет выполняться в Oracle.

1 голос
/ 04 декабря 2009

Хорошо.

Вы можете попробовать это: если вы работаете с SQL Server, добавить топ 1

если вы работаете с MySQL, добавьте ограничение 1

вернет только первый ряд.

Чтобы убедиться, что вы также можете добавить пункт заказа.

0 голосов
/ 07 декабря 2009

Если вы хотите наименьшее значение t2.id, удовлетворяющее второму условию, тогда

select * from (select t1.id, t1.sample, t2.id from table t1 join table t2<br> on t1.sample = t2.sample and t2.id > t1.id order by t2.id ) where rownum =1

Если вам нужен самый большой t2.id, удовлетворяющий второму условию, тогда

select * from (select t1.id, t1.sample, t2.id from table t1 join table t2<br> on t1.sample = t2.sample and t2.id > t1.id order by t2.id desc) where rownum =1

0 голосов
/ 04 декабря 2009

Oracle использует то, что называется "ROWNUM". Ограничение количества результатов раздражающе противоречиво в СУБД.

SELECT t1.id, t1.sample, t2.id
FROM table t1 join table t2  
ON t1.sample = t2.sample and t2.id > t1.id
WHERE ROWNUM <= 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...