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

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

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

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 Профи (647) 5 лет назад
Таблица 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
Остальные ответы
Голова Робота Просветленный (36360) 5 лет назад
Ничего необычного в запросе нет. DUAL - это таблица, можешь написать
select * from dual
АлександрИскусственный Интеллект (308982) 5 лет назад
вы вопрос не поняли...
Голова Робота Просветленный (36360) Что я не понял?
Похожие вопросы