Как сделать первое место в Oracle?

Как мне сделать следующее?

select top 1 Fname from MyTbl

В Oracle 11g?

+210
10 авг. '10 в 17:10
источник поделиться
10 ответов

Если вы хотите только первую выбранную строку, вы можете:

select fname from MyTbl where rownum = 1

Вы также можете использовать аналитические функции для заказа и взять верхнюю часть x:

select max(fname) over (rank() order by some_factor) from MyTbl
+225
10 авг. '10 в 17:13
источник
SELECT *
  FROM (SELECT * FROM MyTbl ORDER BY Fname )
 WHERE ROWNUM = 1;
+144
10 авг. '10 в 17:13
источник
другие ответы

Связанные вопросы


Похожие вопросы

С Oracle 12c (июнь 2013 г.) вы можете использовать его, как показано ниже.

SELECT * FROM   MYTABLE
--ORDER BY COLUMNNAME -OPTIONAL          
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
+25
27 апр. '15 в 15:02
источник

Вы можете использовать ROW_NUMBER() с предложением ORDER BY в подзапросе и использовать этот столбец вместо TOP N. Это можно объяснить шаг за шагом.

См. таблицу ниже, в которой есть два столбца NAME и DT_CREATED.

введите описание изображения здесь

Если вам нужно взять только первые две даты независимо от NAME, вы можете использовать следующий запрос. Логика написана внутри запроса

-- The number of records can be specified in WHERE clause
SELECT RNO,NAME,DT_CREATED
FROM
(
    -- Generates numbers in a column in sequence in the order of date
    SELECT ROW_NUMBER() OVER (ORDER BY DT_CREATED) AS RNO,
    NAME,DT_CREATED
    FROM DEMOTOP
)TAB
WHERE RNO<3;

РЕЗУЛЬТАТ

введите описание изображения здесь

В некоторых ситуациях нам нужно выбрать TOP N результаты, соответствующие каждому NAME. В этом случае мы можем использовать PARTITION BY с предложением ORDER BY в подзапросе. Обратитесь к следующему запросу.

-- The number of records can be specified in WHERE clause
SELECT RNO,NAME,DT_CREATED
FROM
(
  --Generates numbers in a column in sequence in the order of date for each NAME
    SELECT ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY DT_CREATED) AS RNO,
    NAME,DT_CREATED
    FROM DEMOTOP
)TAB
WHERE RNO<3;

РЕЗУЛЬТАТ

введите описание изображения здесь

+9
06 нояб. '15 в 4:59
источник

Вы можете сделать что-то вроде

    SELECT *
      FROM (SELECT Fname FROM MyTbl ORDER BY Fname )
 WHERE rownum = 1;

Вы также можете использовать аналитические функции RANK и/или DENSE_RANK, но ROWNUM, вероятно, самый простой.

+7
09 дек. '13 в 12:51
источник
select * from (
    select FName from MyTbl
)
where rownum <= 1;
+6
10 авг. '10 в 17:13
источник

Использование:

SELECT x.*
  FROM (SELECT fname 
          FROM MyTbl) x
 WHERE ROWNUM = 1

Если вы используете Oracle9i +, вы можете посмотреть с помощью аналитических функций, таких как ROW_NUMBER(), но они не будут работать так же, как ROWNUM.

+5
10 авг. '10 в 17:31
источник

Чтобы выбрать первую строку из таблицы и выбрать одну строку из таблицы, выполните две разные задачи и потребуется другой запрос. Существует много возможных способов сделать это. Четыре из них:

Первая

select  max(Fname) from MyTbl;

Второе

select  min(Fname) from MyTbl;

Третий

select  Fname from MyTbl  where rownum = 1;

Четвертый

select  max(Fname) from MyTbl where rowid=(select  max(rowid) from MyTbl)
+3
12 мар. '14 в 15:37
источник

У меня была та же проблема, и я могу исправить это с помощью этого решения:

select a.*, rownum 
from (select Fname from MyTbl order by Fname DESC) a
where
rownum = 1

Вы можете заказать свой результат, прежде чем иметь первое значение сверху.

Удачи

+2
27 июл. '13 в 23:12
источник
    select Fname from MyTbl where rownum>=1;
0
14 апр. '19 в 10:30
источник

Посмотрите другие вопросы по меткам или Задайте вопрос