2012-10-30 15 views
10

मैं एक टेबल की तरहMySQL आदेश दो कॉलम द्वारा

नीचे
 

    CREATE TABLE Products(Product_id INT, ProductName VARCHAR(255), 
          Featured enum('Yes', 'No'), Priority enum('p1', 'p2', 'p3')) 


    INSERT INTO Products(ProductName, Featured, Priority) 
        VALUES('Product A', 'Yes', 'p1'), 
         ('Product B', 'No', 'p2'), 
         ('Product C', 'Yes', 'p1'), 
         ('Product D', 'No', 'p1'), 
         ('Product E', 'Yes', 'p3'), 
         ('Product F', 'No', 'p2'), 
         ('Product G', 'Yes', 'p1'), 
         ('Product H', 'Yes', 'p2'), 
         ('Product I', 'No', 'p2'), 
         ('Product J', 'Yes', 'p3'), 
         ('Product K', 'Yes', 'p1'), 
         ('Product L', 'No', 'p3'); 


मैं प्राथमिकता P1, P2 के साथ उत्पाद के बाद विशेष रुप से प्रदर्शित उत्पादों और p3

 

Op: 
    ProdName | Featured | Priority 

    Product A Yes   p1 
    Product C Yes   p1 
    Product G Yes   p1 
    Product K Yes   p1 
    Product H Yes   p2 
    Product E Yes   p3 
    Product J Yes   p3 
    Product D No   p1 
    Product B No   p2 
    Product F No   p2 
    Product I No   p2 
    Product L No   p3 

पाने के लिए की आवश्यकता है

मैं एक प्रश्न के नीचे लिखा है जो काम नहीं कर रहा है ..

           
    SELECT * 
    FROM Products 
    ORDER BY Featured IN ('Yes') desc, 
      Priority IN ('p1', 'p2', 'p3') desc 

सकता है कि

में u plz स्थान गलती 63,210
+0

काम करना चाहिए आप क्या त्रुटि देखते हैं? जैसा कि आपने लिखा है, बयान काम करना चाहिए, जवाब देने के लिए एक सरल योगेंद्र सिंह की सिफारिश की जानी चाहिए। क्या आप केवल उत्पाद_आईडी कॉलम चुन रहे हैं? यह आपके उदाहरण में सभी न्यूल होगा। – Yuri

+0

[दो कॉलम द्वारा PHP MySQL ऑर्डर का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/514943/php-mysql-order-by-two-columns) –

उत्तर

13

इस

Select * from Products ORDER BY Featured, Priority 

आप mysql पर आदेश द्वारा उपयोग करते हैं Enum यह वर्णानुक्रम द्वारा यह आदेश नहीं होगा की कोशिश करो, लेकिन यह द्वारा यह आदेश देगा अपनी enum में स्थिति।

आप वर्णानुक्रम ऑर्डर करने के लिए के रूप में आप की तरह इस

Select * from Products ORDER BY concat(Featured) desc , Priority 
4

क्यों आप बस के रूप में एसक्यूएल का उपयोग नहीं करते:

SELECT * 
FROM Products 
    ORDER BY Featured desc, 
     Priority asc; 

इस Yes कर No पहले दिखाई देते हैं जाएगा। P1P2 और P2 से पहले P3 से पहले दिखाई देगा। मेरा मानना ​​है, यही वही है जो आप चाहते हैं।

तो आदेश देने में डेटा प्रकार समस्या

SELECT * 
FROM Products 
    ORDER BY CONCAT(Featured) desc, 
     CONCAT(Priority) asc; 
+0

कोई भी 2 काम नहीं जा रहा है – aprilleocean

0

चेक एक स्ट्रिंग के लिए enum नाम डाली वर्णन चाहते हैं इस query--

SELECT * 
FROM Products 
    ORDER BY Featured asc,Priority,ProductName asc; 

Fiddle

कार्य कोड की जांच बेवकूफ

-1
SELECT * 
    FROM Products 
where Featured IN ('Yes') and 
     Priority IN ('p1', 'p2', 'p3') 
Order by Featured asc,Priority,ProductName asc; 

यह

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