Зачем нужно заключать подзапрос в select ()? - PullRequest
0 голосов
/ 06 мая 2018

Вопрос для начинающих: мне трудно понять ответ на этот постгрес упражнение

Правильный ответ таков:

insert into cd.facilities 
(facid, name, membercost, guestcost, initialoutlay, monthlymaintenance) 
select (select max(facid)+1 from cd.facilities),'Spa',20,30,100000,800;

Что я не понимаю, почему следующий код не работает?

    insert into cd.facilities 
(facid, name, membercost, guestcost, initialoutlay, monthlymaintenance) 
select max(facid)+1 from cd.facilities,'Spa',20,30,100000,800;

сообщение об ошибке:

enter image description here

Я попробовал отдельно 2 версии подзапроса:

select max(facid)+1 from cd.facilities

enter image description here

select (select max(facid)+1 from cd.facilities)

enter image description here

и они, кажется, дают точно такой же вывод. Почему обертка подзапроса с select () необходима здесь? Спасибо!

1 Ответ

0 голосов
/ 06 мая 2018

Если вы не используете скобки, запрос попытается выбрать данные не только из таблицы cd.facilities, но и продолжить с 'Spa', 20, 30 и т. Д., Которые не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...