«таблица или представление не существует» - PullRequest
0 голосов
/ 08 ноября 2018
NAME    PAYMENT
James   1000    
Kepler  2000    
Ronny   1300    
Edward  1500    
Patrick 1700    
John    1660    
Danny   1600    
Hemry   1234    
Harry   1236    

выберите * из ( выберите * у студента) t1, где t1.payment = (выберите max (оплата) из t1)

это показывает неправильно

выберите * у студента, где оплата = (выберите макс (оплата) у студента)

это правильно

Но кто-нибудь может уточнить, почему t1 не является правильным? Как использовать T1, где предложение, пожалуйста, скажите

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

CTE, возможно, самый простой вариант; T1 будет сам CTE, и затем вы можете ссылаться на него:

with t1 as (select * from student)
select * from t1
where t1.payment = (select max(payment) from t1);
0 голосов
/ 08 ноября 2018

Это вызывает ошибку, потому что 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)
0 голосов
/ 08 ноября 2018
with t1 as (select max(payment) payment from student )

select name, student.payment from student ,t1 where student.payment = t1.
...