यह प्राकृतिक क्वेरी प्रोसेसिंग ऑर्डर के कारण होता है, जो निम्न है:
FROM
ON
OUTER
WHERE
GROUP BY
CUBE
|ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
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 कथन के निष्पादन का क्रम क्या है