Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

WHERE क्लॉज में उपनाम नाम का उपयोग नहीं कर सकते, लेकिन ORDER BY में कर सकते हैं

यह प्राकृतिक क्वेरी प्रोसेसिंग ऑर्डर के कारण होता है, जो निम्न है:

  1. FROM
  2. ON
  3. OUTER
  4. WHERE
  5. GROUP BY
  6. CUBE | ROLLUP
  7. HAVING
  8. SELECT
  9. DISTINCT
  10. ORDER BY
  11. TOP

आप SELECT . में अपना उपनाम निर्दिष्ट कर रहे हैं बयान। जैसा कि आप देख सकते हैं WHERE SELECT . से पहले प्रोसेस किया जाता है और ORDER BY उसके बाद आता है। यही कारण है। अब उपाय क्या हैं:

  • उपश्रेणियाँ। लेकिन उन्हें पढ़ना मुश्किल हो सकता है।
  • CROSS APPLY . यह सुंदरता होना चाहिए आपका कोड थोड़ा और अनुशंसित विधि है।

CROSS APPLY WHERE . से पहले उपनाम निर्दिष्ट करेगा बयान, इसे इसमें प्रयोग करने योग्य बनाते हैं।

SELECT [Hotel Id]
    , latitude
    , longitude
    , establishmentname
    , Distance
FROM [dbo].[RPT_hotels]
CROSS APPLY (
    SELECT 6371 * ACos(Cos(RADIANS(Latitude)) * Cos(RADIANS('50.017466977673905')) * Cos(RADIANS('24.69924272460935') - RADIANS(Longitude)) + Sin(RADIANS(Latitude)) * Sin(RADIANS('50.017466977673905')))
    ) AS T(Distance)
WHERE distance < 30
ORDER BY Distance;

अगर आप और जानना चाहते हैं। कृपया इस प्रश्न को पढ़ें: इस SQL ​​​​कथन के निष्पादन का क्रम क्या है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PERFMON के माध्यम से प्रदर्शन काउंटरों की निगरानी | SQL सर्वर प्रदर्शन समस्या निवारण -3

  2. विशिष्ट अभिलेखों पर PIVOT क्वेरी

  3. SQL सर्वर कार्य स्वचालित रूप से बनाएँ

  4. SQL सर्वर में सांख्यिकी IO क्या है?

  5. SQL डेटाबेस त्रुटि को ठीक करने के लिए पूरी गाइड 5243