에 가입 얻을 : 나는 두 번째 조건을 만족하는 첫 번째 행을 얻을 필요가a의 첫 번째 행이 같은 질의를했습니다
select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id
.
아이디어가 있으십니까?
에 가입 얻을 : 나는 두 번째 조건을 만족하는 첫 번째 행을 얻을 필요가a의 첫 번째 행이 같은 질의를했습니다
select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id
.
아이디어가 있으십니까?
음.
당신이 시도 할 수 : 당신이 SQL 서버로 작업하는 경우, 은 MySQL과 연동하여 작업하는 경우, 제한 1
을 추가 상위 1
를 추가 그것은 첫 번째를 반환합니다 열.
주문 절도 추가 할 수 있습니다.
그는 Oracle DB를 사용하고 있습니다. –
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
이 기법에 대한 설명이 있습니다. SELECT에 ORDER BY 절이 있으면 ORDER BY 앞에 WHERE ROWNUM = 1이 실행됩니다. 이 경우 하위 쿼리에 SELECT (WHERE ROWNUM = 1 조건 빼기)를 넣은 다음 SELECT * FROM (하위 쿼리)에 ROWNUM = 1을 입력합니다. 예, 복잡하지만 오라클이 있습니다. –
과 rownum = 1은 작동하지만 모든 ID를 추출해야하고 하나만 추출해야합니다. –
당신은 당신의 상태를 만족시키는 첫 번째 행을 얻고 싶다고 말하지 않았습니까? –
반환되는 모든 행은 두 조건을 모두 충족하므로 두 번째 조건이 만족되는지 확인하기 위해 특별한 조치를 취할 필요가 없습니다.
반환 된 결과 크기를 1로 제한하려면 오라클에서 실행될 경우 WHERE ROWNUM = 1
을 쿼리에 추가하십시오.
네,하지만 모든 id에 대해 나는> 조건을 만족시키는 첫 번째 id를 취해야합니다. rownum = 1을 사용하면 첫 번째 행만 반환됩니다. –
나는이 문제를 잘 모르겠다. 리턴 된 모든 ID는> 조건을 만족시킵니다. t2.id> t1.id 이외에 가장 큰 t2.id를 찾고 계십니까? –
오라클은 "ROWNUM"이라는 것을 사용합니다. 결과의 수를 제한하는 것은 DBMS간에 성가신 일관성이 없습니다.
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
당신은 두 번째 조건을 만족하는 최소 t2.id를 원하는 경우 두 번째 조건을 만족하는 가장 큰 t2.id를 원하는 경우
select * from (select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id order by t2.id) where rownum =1
다음
select * from (select t1.id, t1.sample, t2.id from table t1 join table t2
on t1.sample = t2.sample and t2.id > t1.id order by t2.id desc) where rownum =1
첫 번째 행은 정확히 무엇을 기반으로합니까? 결과 세트를 주문하지 마십시오. –
두 테이블에 샘플 데이터를 제공하고 예상되는 출력의 예를 제공하면 도움이 될 것으로 생각합니다. 나는 당신이 당신의 다른 코멘트에서 의미하는 바를 따르지 않을 것입니다. "나는 모든 이드를 만족시키는 첫 번째 이드를 가져야한다." –