मैं जो इनपुट पैरामीटर के आधार पर एक resultset पैदावार और परिणाम विभिन्न मापदंडों के आधार पर क्रमबद्ध किया जा सके (एएससी/DESC) एक खोज क्वेरी है अब मुझे एक आवश्यकता है जिसमें, यदि मेरे पास id
पास हो गया है, तो मैं दिए गए परिणाम में शीर्ष पर चिपचिपा होने के लिए इसी रिकॉर्ड को बनाना चाहता हूं।यह सुनिश्चित करने के लिए कि mysql में किसी दिए गए परिणाम में रिकॉर्ड हमेशा शीर्ष पर होता है? किराए, अवधि आदि (जगह में पृष्ठांकन और 10 रिकॉर्ड की सीमा के साथ)</p> <p>:
चलें कहते हैं कि हम इस तरह एक पैकेज तालिका है:
Package
- id
- name
- mPrice
- vPrice
- duration
// Searching pkg based on Price (in DESC order) where name = Thailand
sqlQuery =
"SELECT p.id, p.name, p.mPrice, p.vPrice FROM package p
WHERE p.name = LOWER('Thailand')
ORDER BY (p.mPrice + p.vPrice) DESC
LIMIT 10"
के पूरा resultset मान लेते आईडी के साथ 20 रिकॉर्ड 1 20. करने के लिए मैं अब आईडी 14 हमेशा पर होना के साथ रिकॉर्ड वापस जाने के लिए आवश्यक कर रहा हूँ है चोटी। मैं निम्न क्वेरी के साथ आया था, लेकिन इस काम नहीं कर रहा:
sqlQuery =
"SELECT p.id, p.name, p.mPrice, p.vPrice FROM package p
WHERE p.name = LOWER('Thailand') or p.id = 14
ORDER BY CASE
WHEN p.id=14 then 0
else (p.mPrice + p.vPrice)
end DESC
LIMIT 10"
के रूप में मेरा अनुमान है क्यों यह काम नहीं कर रहा: खंड द्वारा आदेश के बाद, resultset अवरोही क्रम है, जो तब से काट दिया गया है में क्रमबद्ध हो जाता 10 रिकॉर्ड आईडी = 14 के साथ रिकॉर्ड इस कटा हुआ सेट का हिस्सा नहीं हो सकता है। क्या ये सही है ?
मैं शीर्ष पर चिपकने के लिए id = 14 के साथ रिकॉर्ड कैसे प्राप्त करूं?
पर रहेगा बहुत अच्छा! इस बारे में सोचना चाहिए था। हालांकि, यह काम नहीं किया जब मैंने एएससी के साथ इसे सॉर्ट करने का प्रयास किया और मुझे यकीन नहीं है कि क्यों। 'ऑर्डर द्वारा (पी.आईडी = 14) एएससी, (पी.एमप्रिस = पी.पीप्रिस) एएससी ' – brainydexter
' पी.आईडी = 14' रिटर्न '1' अगर शर्त सही है, तो अन्यथा। आरोही आरोही '0' पहले रखती है, तो जो आप चाहते हैं वह आखिरी बार आता है ... –
आह! महान। मैं बस एएससी/डीईएससी के आधार पर समानता ऑपरेटर को आईडी पर फिसल दूंगा। क्या आपके पास कोई विचार है यदि यह यूनियन से बेहतर प्रदर्शन कर सकता है? – brainydexter