首頁  >  問答  >  主體

將資料庫表中所有欄位都有資料的行置於前位

<p>在MySQL5.7中,我有一個有28列和4000行的欄位。我想先取得所有有資料的行或先取得有最多列資料的行,然後再逐漸取得其他行的資料。我該如何實現這個? </p> <p>例如: 表:Student</p> <table class="s-table"> <thead> <tr> <th style="text-align:center;">name</th> <th style="text-align:center;">age</th> <th style="text-align:center;">address</th> </tr> </thead> <tbody> <tr> <td style="text-align:center;">tan</td> <td style="text-align:center;">10</td> <td style="text-align:center;"></td> </tr> <tr> <td style="text-align:center;">gib</td> <td style="text-align:center;">10</td> <td style="text-align:center;">california</td> </tr> <tr> <td style="text-align:center;">hal</td> <td style="text-align:center;"></td> <td style="text-align:center;"></td> </tr> <tr> <td style="text-align:center;">pur</td> <td style="text-align:center;">12</td> <td style="text-align:center;"></td> </tr> </tbody> </table> <p>期望輸出:'gib' 應該先出現,然後是只有1列資料的 'tan' 或 'pur',最後沒有任何資料的 'hal'。 </p>
P粉504080992P粉504080992428 天前528

全部回覆(1)我來回復

  • P粉677573079

    P粉6775730792023-08-19 12:28:57

    假設name列永遠不會有空值,我們可以嘗試:

    SELECT name, age, address
    FROM yourTable
    ORDER BY
        name,
        age IS NULL,      -- 非空年龄优先
        age,              -- 按年龄升序排序
        address IS NULL,  -- 非空地址优先
        address;          -- 按地址升序排序
    

    回覆
    0
  • 取消回覆