Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что означает "from dual" в sql-запросах?

Дмитрий Митяев Ученик (3), закрыт 4 года назад
Дополнен 4 года назад
Например,

SELECT
SYSDATE,
TRUNC(SYSDATE,'mm'),
TRUNC(SYSDATE,'yyyy'),
ROUND(TO_DATE('14.03.2018','dd.mm.yyyy'),'mm')a,
ROUND(TO_DATE('14.03.2018','dd.mm.yyyy'),'yyyy')b
FROM DUAL;
Лучший ответ
Carin Профи (911) 4 года назад
Таблица DUAL и для чего она нужна
В Oracle, в отличие от того же MS SQL Server, нельзя сделать запрос "из ниоткуда".

SELECT 1;

SELECT 1
*
ERROR at line 1:
ORA-00923: FROM keyword not found where expected

Поэтому в большинстве запросов должна быть ссылка на таблицу или представление. Как правило, для таких запросов используется таблица DUAL. Таблица DUAL - это реальная таблица в схеме SYS, содержащая только одну запись.

SELECT * FROM DUAL;

DUMMY
-----
X

1 rows selected

Как можно использовать таблицу DUAL в запросах? К примеру мы хотим получить системное время. Тогда, раз что-то во FROM указывать надо - укажем таблицу DUAL:

SELECT SYSDATE FROM DUAL;

SYSDATE
-------------------------
14.03.18

1 rows selected
Остальные ответы
Голова Робота Просветленный (36328) 4 года назад
Ничего необычного в запросе нет. DUAL - это таблица, можешь написать
select * from dual
АлександрИскусственный Интеллект (290692) 4 года назад
вы вопрос не поняли...
Голова Робота Просветленный (36328) Что я не понял?
Похожие вопросы