/ / इनमें से केवल एक SQL कथन क्यों काम करता है? - sql, oracle, select

इन SQL कथनों में से केवल एक ही क्यों काम करता है? - एसक्यूएल, ऑरैकल, का चयन करें

पहला SQL कथन निष्पादित क्यों नहीं करता है, और दूसरा क्या करता है?

1.

select e.employee_id, e.last_name, e.salary as "SALARY"
from employees e
where employees.salary > (select avg(salary) from employees)
order by SALARY;

2.

select e.employee_id, e.last_name, e.salary as "SALARY"
from employees e
where e.salary > (select avg(salary) from employees)
order by SALARY;

उत्तर:

जवाब के लिए 5 № 1

क्योंकि आप पहले से ही हैं एक उपनाम को परिभाषित करें तालिका के नाम के लिए employee.

तो में WHERE खंड, आपको करने की आवश्यकता है उपनाम का उपयोग करें, तालिका का नाम नहीं है क्योंकि यह अब मान्य नहीं है।

SELECT e.employee_id, e.last_name, e.salary as "SALARY"
FROM   employees e
WHERE  e.salary > (select avg(salary) from employees)
-- ^ ALIAS should be used, not the tableName
ORDER  BY SALARY;

यह थोड़ा हो सकता है विषय से परे लेकिन यह एक अतिरिक्त जानकारी है।

SQL ऑपरेशन का क्रम निम्नानुसार है:

  • खंड से
  • कहां कारण
  • खंड द्वारा ग्रुप
  • हैविंग खंड
  • खंड चुनें
  • खंड द्वारा आदेश

चूंकि आपने टेबल के नाम के लिए एक उपनाम दिया है FROM खण्ड, संचालन के क्रम में कुछ भी निम्न है अब उस उपनाम का हवाला दिया गया है और टेबल के नाम पर ही नहीं।


जवाब के लिए 0 № 2

पहला एक काम करने के लिए, कर्मचारियों के साथ "ई" की सभी घटनाओं को बदलें और "ई" उपनाम हटा दें:

select employees.employee_id, employees.last_name, employees.salary as "SALARY"
from employees
where employees.salary > (select avg(salary) from employees)
order by SALARY;