Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

नल अंतिम छँटाई

तुम सही कह रही हो। बिना किसी कारण के मैं थाह ले सकता हूं, MySQL स्वीकार करता है एक अस्पष्ट ORDER BY जब तक आपके द्वारा प्रदान किया जाने वाला नाम किसी भी तरह से नियंत्रित नहीं किया जाता है (ऐसा कोई तरीका नहीं जिसके बारे में मैं सोच सकता था। शायद अन्य मौजूद हों)।

जैसे ही यह होता है, अस्पष्टता खारिज हो जाती है।

यह स्वीकार किया जाता है (और बेमानी):

select b.id, a.name as name
    FROM client AS a JOIN client AS b ON (a.id = b.id)
    ORDER BY name, name;

जबकि COALESCE(name, '') , name IS NULL , name OR NULL सभी अस्वीकृत हैं।

स्पष्ट समाधान उपनाम के लिए एक अलग नाम का उपयोग करना है, जो किसी भी तालिका में प्रकट नहीं होता है।

एक नेस्टेड क्वेरी बनाने की एक और संभावना होगी:

SELECT * FROM ( your query here, without ORDER ) AS original
ORDER BY IF($sortcol is NULL,1,0), $sortcol;

वह है:

$sortcol="boat";
$sql = <<<SQL
   SELECT * FROM (
      SELECT fleet,b.boat as boat,owner FROM boats as b 
         LEFT JOIN owners as o ON  b.boat=o.boat 
   ) AS original
   ORDER BY IF($sortcol is NULL,1,0), $sortcol;
SQL;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो अलग-अलग तालिकाओं से स्तंभों के बीच अंकगणितीय संचालन करने वाले फ़ंक्शन का उपयोग करके एक तालिका में कॉलम जोड़ने में सहायता की आवश्यकता है

  2. MySQL - मेल संदेशों के साथ अपठित संदेशों के लिए क्वेरी करना

  3. यह MySQL क्वेरी (शून्य जांच के साथ) इस दूसरे की तुलना में इतनी धीमी क्यों है?

  4. आरक्षण प्रणाली तिथियां

  5. फ्लैटफाइल्स पर MySQL का उपयोग क्यों करें?