Обычно мы все делаем сообщения, если есть проблемы. Это другое, где я ожидал бы ошибку, но я не получаю ее.Oracle subselect не создает ошибку?
В Oracle У меня есть следующие:
create table temp_table as
SELECT PersonID AS OtherName
FROM Personnel
WHERE PersonID = '12345';
1. select FunnyName from temp_table; -- This produce an error as expected - good.
2. SELECT * FROM Personnel
WHERE PersonID in (select OtherName from temp_table); --This produces 1 record - good
3. SELECT * FROM Personnel
WHERE PersonID in (select FunnyName from temp_table); --This produces all records - bad
Я ожидал бы утверждение 3 также выдаст сообщение об ошибке, как подзапрос является такой же, как выбрать в заявлении 1, что действительно дает ошибку. Конечно, это не может быть ошибкой Oracle, но я не понимаю логики.
Я использую Oracle 11.
Является ли утверждение 2 верно? Или должен быть SELECT * FROM Personnel WHERE PersonID в (выберите OtherName из temp_table); –
Вы правы. Мои извинения - исправит. –
Можете ли вы опубликовать, что такое столбцы в Личном столе? Есть ли столбец «FunnyName» в таблице Personnel? Запрос 2 кажется неправильным, он должен быть выбран * из таблицы Personal, поскольку в temp_table отсутствует столбец PersonID. – San