将数据库表中所有列都有数据的行置于前位
P粉504080992
P粉504080992 2023-08-18 15:48:44
0
1
583
<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粉504080992
P粉504080992

全部回复(1)
P粉677573079

假设name列永远不会有空值,我们可以尝试:

SELECT name, age, address
FROM yourTable
ORDER BY
    name,
    age IS NULL,      -- 非空年龄优先
    age,              -- 按年龄升序排序
    address IS NULL,  -- 非空地址优先
    address;          -- 按地址升序排序
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板