मान लीजिए कि मैं उपयोगकर्ता नाम के साथ एक मेज करते हैं:दो प्रश्नों के संघ से शीर्ष एन का चयन कैसे करें जहां परिणामस्वरूप आदेश को व्यक्तिगत क्वेरी द्वारा रैंक किया जाना चाहिए?
Id | Name
-----------
1 | Bobby
20 | Bob
90 | Bob
100 | Joe-Bob
630 | Bobberino
820 | Bob Junior
मैं 'बॉब' परिणामस्वरूप जहां सेट के लिए नाम पर n
मैचों की एक सूची वापस करना चाहते पहले समान मैचों के बाद सटीक मिलान होता है।
मैंने सोचा था कि कुछ इस तरह
SELECT TOP 4 a.* FROM
(
SELECT * from Usernames WHERE Name = 'Bob'
UNION
SELECT * from Usernames WHERE Name LIKE '%Bob%'
) AS a
काम हो सकता है लेकिन वहाँ दो समस्याएं हैं:
- यह एक अक्षम क्वेरी के बाद से उप चयन कई पंक्तियों को वापस सकता है (कार्य योजना लागू करके शो को देखकर शीर्ष से पहले होने वाला एक जुड़ना)
- (लगभग) अधिक महत्वपूर्ण बात यह है कि सटीक मिलान (एस) परिणाम में पहले दिखाई नहीं देगा क्योंकि परिणामी सेट प्राथमिक कुंजी द्वारा आदेश दिया जाता है।
मैं एक प्रश्न है कि (टॉप 4 के लिए) वापस आ जाएगी किसी एक क्वेरी में
Id | Name
---------
20 | Bob
90 | Bob
(and then 2 results from the LIKE query, e.g. 1 Bobby and 100 Joe-Bob)
यह संभव है के लिए देख रहा हूँ?
मुझे आपका समाधान पसंद है। बहुत चालाक! –
अहह! बहुत बढ़िया :) पूरी तरह से केस के बारे में भूल गया ... – Jedidja