oracle 구문을 사용하여 table에서 한 행만 선택하고 싶습니다 DUAL
. 예를 들어 다음 쿼리를 실행하고 싶습니다.
SELECT user
FROM DUAL
… 40 개의 레코드가있을 것입니다. 하지만 기록은 하나만 필요합니다. … 그리고 나는 WHERE
절 없이 그것을 실현하고 싶습니다 .
table_name 필드에 다음과 같은 것이 필요합니다.
SELECT FirstRow(user)
FROM DUAL
답변
ROWNUM을 사용합니다.
즉.
SELECT user FROM Dual WHERE ROWNUM = 1
http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
답변
댓글 중 하나에 숨겨진이 “솔루션”을 찾았습니다. 잠시 동안 그것을 찾고 있었기 때문에 나는 그것을 조금 강조하고 싶습니다 (아직 주석을 달거나 그런 일을 할 수 없습니다 …), 그래서 이것은 내가 사용한 것입니다 :
SELECT * FROM (SELECT [Column] FROM [Table] ORDER BY [Date] DESC) WHERE ROWNUM = 1
이렇게하면 [Date]가 항상 SYSDATE를 통해 삽입된다고 가정하고 테이블의 최신 항목에서 원하는 [Column] 항목이 인쇄됩니다.
답변
이 구문은 Oracle 12c에서 사용할 수 있습니다.
select * from some_table fetch first 1 row only;
select * from some_table fetch first 1 rows only;
select * from some_table fetch first 10 row only;
select * from some_table fetch first 10 rows only;
^^ 원하는 복수의 행 수에 관계없이 행 또는 행 (복수)을 사용할 수 있음을 보여주고 싶었습니다.)
답변
Oracle DB 테이블의 첫 번째 행을 가져 오기 위해 세 가지 선택 사항이 있습니다.
1) select * from table_name where rownum= 1
가장 좋은 방법
2) select * from table_name where id = ( select min(id) from table_name)
삼)
select * from
(select * from table_name order by id)
where rownum = 1
답변
내가 아는 dual
한 Oracle 의 테이블은 행이 하나 뿐인 특수 테이블입니다. 따라서 이것으로 충분합니다.
SELECT user
FROM dual
답변
? 대답은 다음과 같습니다.
중첩 된 쿼리를 다음과 같이 사용해야합니다.
SELECT *
FROM ANY_TABLE_X
WHERE ANY_COLUMN_X = (SELECT MAX(ANY_COLUMN_X) FROM ANY_TABLE_X)
=> PL / SQL에서 “ROWNUM = 1″은 TSQL의 “TOP 1″과 같지 않습니다.
따라서 다음과 같은 쿼리를 사용할 수 없습니다. “select * from any_table_x where rownum = 1 order by any_column_x;” oracle이 첫 번째 행을 가져 오므로 order by 절을 적용합니다.
답변
limit 1
Oracle 에는 조건 (MySQL / PostgresSQL)이 없으므로 지정해야합니다.where rownum = 1
.