"таблица или представление не существует" Прибытие в базу данных Oracle
NAME PAYMENT
James 1000
Kepler 2000
Ronny 1300
Edward 1500
Patrick 1700
John 1660
Danny 1600
Hemry 1234
Harry 1236
выберите * из (выберите * у ученика) t1, где t1.payment=(выберите макс (оплата) из t1)
это показывает неправильно
выберите * от студента, где оплата = (выберите макс (оплата) от студента)
это правильно
Но кто-нибудь может уточнить, почему t1 не является правильным? Как использовать T1, где пункт, пожалуйста, сообщите
3 ответа
Решение
Это вызывает ошибку, потому что T1 не является таблицей, из которой должен быть прецедент с таблицей, вы можете использовать Common Table Expression
например
with ct as (
select 1,2 from dual )
select * from ct
в вашем примере
with st as ( select * from student)
select * from st where st.paymnet=(select max(payment) from st)
with t1 as (select max(payment) payment from student )
select name, student.payment from student ,t1 where student.payment = t1.
CTE, возможно, самый простой вариант; T1
будет сам CTE, и затем вы можете ссылаться на него:
with t1 as (select * from student)
select * from t1
where t1.payment = (select max(payment) from t1);