2011-09-22 18 views
5

कहें कि मेरे पास एक MySQL तालिका है जिसका नाम "नाम"mySQL आदेश?

इस फ़ील्ड में प्रति पंक्ति एक नाम है।

10 पंक्तियों के होते हैं:

Apple 
Pear 
Banana 
Orange 
Grapefruit 
Pineapple 
Peach 
Apricot 
Grape 
Melon 

मैं एक प्रश्न कैसे फार्म तो मैं मेज से का चयन करेंगे, मैं जानकारी के इस तरह दिखाना चाहते हैं:

Peach 
Apple 
Apricot 
... and then everything else is listed by descending order. 

तो बुनियादी तौर पर मैं चाहता हूँ सूची के शीर्ष पर कुछ निर्दिष्ट परिणाम दिखाएं, और फिर शेष परिणामों को अवरोही क्रम में दिखाएं।

धन्यवाद।

उत्तर

-1

चूंकि आप PHP का उपयोग कर रहे हैं, तो आप अपने उत्तरों को एक सरणी में पढ़ सकते हैं, उन तत्वों को पॉप कर सकते हैं जिन्हें आप शीर्ष स्टोर में अस्थायी सरणी में चाहते हैं। मूल सरणी को वर्णानुक्रम में क्रमबद्ध करें, फिर अस्थायी सरणी को प्रीपेड करें।

1

आप IF() फ़ंक्शन का उपयोग कर सशर्त के साथ सॉर्ट कर सकते हैं। IF() राज्यों के लिए प्रलेखन:

IF(expr1,expr2,expr3)

तो expr1 सही है (expr1 <> 0 और expr1 <> शून्य) तो IF() रिटर्न expr2; अन्यथा यह expr3 देता है। IF() उस संदर्भ के आधार पर एक संख्यात्मक या स्ट्रिंग मान देता है।

तो तुम इस तरह शीर्ष पर विशिष्ट तत्वों सॉर्ट करने के लिए उपयोग कर सकते हैं:

SELECT * 
FROM fruit 
ORDER BY 
    IF(name = 'Peach', 0, 1), 
    IF(name = 'Apple', 0, 1), 
    IF(name = 'Apricot', 0, 1), 
    name DESC 

इस आदेश की एक श्रृंखला है पहले लेने सर्वोच्च प्राथमिकता के साथ। तो यदि name='Peach', मान 0 होगा, अन्य सभी के लिए मूल्य 1 होगा। डिफ़ॉल्ट रूप से एएससी आदेश में, 0 1 से पहले आता है, यह सुनिश्चित करता है कि "पीच" सूची के शीर्ष पर होगा। श्रृंखला में दूसरा क्रम निर्दिष्ट करता है कि कैसे पहले प्रकार के संबंधों को तोड़ना है। इस मामले में, सभी तत्व मूल्य '1' के साथ पहले प्रकार में 'पीच' टाई को छोड़ देते हैं। और इस मामले में, 'ऐप्पल' टाई सूची के शीर्ष पर धकेल दिया जाता है, जो वास्तव में कुल सूची में दूसरा स्थान है। आदि ... आखिरी 'नाम डीईएससी' के अंत तक।

CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

पहले संस्करण परिणाम जहां मूल्य = COMPARE_VALUE रिटर्न:

अन्य जवाब बताते हैं के रूप में, CASE()IF() रों की एक श्रृंखला के लिए एक विकल्प है। दूसरा संस्करण पहली स्थिति के लिए परिणाम देता है जो सत्य है। यदि कोई मिलान परिणाम नहीं था, तो ELSE के बाद परिणाम लौटा, या यदि कोई ईएलएसई भाग नहीं है तो न्यूल।

select * 
from fruit 
order by 
    case name 
     when 'Peach' then 1 
     when 'Apple' then 2 
     when 'Apricot' then 3 
     else 4 
    end, 
    name 

कि किसी भी SQL डेटाबेस में काम करना चाहिए:

6

आप कुछ इस तरह कर सकता है।

संबंधित मुद्दे