首页  >  问答  >  正文

将数据库表中所有列都有数据的行置于前位

<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 天前530

全部回复(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
  • 取消回复