복붙노트

[SQL] 어떻게 오라클의 테이블에서 레코드를도 선택?

SQL

어떻게 오라클의 테이블에서 레코드를도 선택?

나는 그것을 더 행을 표시하지 않더라도 reslut에 records.but 번호 검색 쿼리 아래 사용하고 있습니다

select ename,job from emp where mod(rownum,2)=0;

왜 모드 (ROWNUM, 2) 여기서 상태에서 작동하지 않습니다

U는 홀수 레코드를 선택하는 쿼리를 적어주세요 수 있습니다

해당 쿼리와 아무것도 잘못이 있습니까?

SUGGETIONS은 제발 ..

해결법

  1. ==============================

    1.첫 번째 행의 ROWNUM은, MOD (ROWNUM, 2)이 경우, 1과 1이고, 당신의 문 MOD입니다 (ROWNUM, 2) = 0부터 다음이 1 = 0과에 감소 : 때문에 작동하지 않습니다 열은 폐기된다. 이후의 행은 하나의 ROWNUM 대해 테스트된다 (이전 행이 더 이상 출력이며, 행 번호가 없기 때문)를 다시 테스트를 실패하고 폐기. 반복, 광고 nauseum 모든 행은 WHERE 테스트를 실패하고 삭제됩니다.

    첫 번째 행의 ROWNUM은, MOD (ROWNUM, 2)이 경우, 1과 1이고, 당신의 문 MOD입니다 (ROWNUM, 2) = 0부터 다음이 1 = 0과에 감소 : 때문에 작동하지 않습니다 열은 폐기된다. 이후의 행은 하나의 ROWNUM 대해 테스트된다 (이전 행이 더 이상 출력이며, 행 번호가 없기 때문)를 다시 테스트를 실패하고 폐기. 반복, 광고 nauseum 모든 행은 WHERE 테스트를 실패하고 삭제됩니다.

    MOD (ROWNUM, 2) = 1 WHERE 당신은 홀수 행을 사용하여이 방법을 얻을하려고하면 다음 행이 시험을 실패하고 쿼리에 포함되지 않습니다, 첫 번째 행에만 두 번째 및 후속 반환합니다.

    Vijaykumar Hadalgi에서 알 수 있듯이, 당신은 행을 제한하는 (이 절을 제한하려면 어디없이 모든 행 번호를 수) 하위 쿼리에서 ROWNUM을 선택하고 외부 쿼리에서 테스트를 수행해야합니다 :

    SELECT ename, job
    FROM   (
      SELECT ename,
             job,
             ROWNUM AS row_id             -- Generate ROWNUM second.
      FROM   (
        SELECT ename, job
        FROM   Emp
        ORDER BY ename                    -- ORDER BY first.
      )
    )
    WHERE  MOD( row_id, 2 ) = 0;          -- Filter third.
    

    SQLFIDDLE

  2. ==============================

    2.이 시도

    이 시도

    행 세부 사항의 짝수 번호를 찾으려면이 코드를 사용할 수 있습니다. 이 사람은 오라클 SQL뿐만 아니라 MySQL은 편안합니다.

    select * from (select ename,job, ROWNUM AS rn from emp) where mod(rn, 2) = 0;
    

    행 세부 사항의 ODD 번호를 찾으려면이 코드를 사용할 수 있습니다.

    select * from (select ename,job, ROWNUM AS rn from emp) where mod(rn, 2) <> 0;
    
  3. ==============================

    3.

    -- for selecting rows 1,3,5,7....
    SELECT EMPLOYEE_ID,FIRST_NAME, LAST_NAME FROM 
    (
      SELECT DENSE_RANK OVER(ORDER BY EMPLOYEE_ID)AS RANK, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
      FROM EMPLOYEES
    )
    WHERE MOD(RANK,2)=1
    
    -- for selecting rows 2,4,6,8....
    SELECT EMPLOYEE_ID,FIRST_NAME, LAST_NAME FROM 
    (
      SELECT DENSE_RANK OVER(ORDER BY EMPLOYEE_ID)AS RANK, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
      FROM EMPLOYEES
    )
    WHERE MOD(RANK,2)=0
    
  4. ==============================

    4.

    select * from emp where empid in (select decode(mod(rownum,2),0, empid,null) from emp);  --Alternate record Even numbered
    

    테이블에서조차 기록을 가져 오기

  5. ==============================

    5.또는 당신이 시도 할 수 있습니다 :

    또는 당신이 시도 할 수 있습니다 :

    여기에 내부 쿼리는 우리가 모든 기록 정보를 얻을 수에 따라 모든 짝수 기록 기본 키 값을 가져옵니다.

    SELECT * FROM EMP WHERE EMPNO IN
    ( 
    SELECT CASE MOD(ROWNUM,2)
            WHEN 0 THEN EMPNO
            END
    FROM EMP
    );
    

    이것은 모든 홀수 기록을 가져옵니다

    SELECT * FROM EMP WHERE EMPNO IN
    (
    SELECT  CASE MOD(ROWNUM,2)
            WHEN 1 THEN EMPNO
            END
    FROM EMP
    );
    
  6. ==============================

    6.이 할 것입니다 :

    이 할 것입니다 :

    Select * from (Select rownum as No_of_Row, E.* from emp E)
    Where mod(No_of_Row,2)=0;
    
  7. ==============================

    7.

    SELECT empno,ename,slno  
    FROM  ( SELECT empno,ename,ROW_NUMBER() OVER
    (ORDER BY empno desc) AS slno FROM emp ) result WHERE mod(slno,2) = 1;
    
  8. ==============================

    8.쿼리 아래를 사용하여,

    쿼리 아래를 사용하여,

    select * from (select ename,job, ROWNUM as row_id from emp) where mod(row_id, 2) = 0;
    
  9. ==============================

    9.행 NUM 원래 테이블없는 결과 테이블의 행 번호를 나타낸다. 그래서 먼저 ROW_ID 또는 변수 사용이 변수에 할당합니다.

    행 NUM 원래 테이블없는 결과 테이블의 행 번호를 나타낸다. 그래서 먼저 ROW_ID 또는 변수 사용이 변수에 할당합니다.

  10. ==============================

    10.시도하십시오 :

    시도하십시오 :

    select * from emp where (rowid,0) in (select rowid, mod(rownum,2) from emp)
    

    산출:- 이 4 6

    Select * from emp where (rowid,1) in (select rowid, mod(rownum,2) from emp);
    

    출력 : 1,3,5 ..

    또는이 작동합니다

    이 :

    홀수 :

    select * from
    ( 
    SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
    FROM table1
     ) d 
    where (RowNumber % 2) = 1 
    

    도 :

    select * from
    ( 
    SELECT col1, col2, ROW_NUMBER() OVER(ORDER BY col1 DESC) AS 'RowNumber', 
    FROM table1
    ) d 
    where (RowNumber % 2) = 0
    
  11. from https://stackoverflow.com/questions/20014495/how-to-select-even-records-from-a-table-in-oracle by cc-by-sa and MIT license