栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

连续计算NULL数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

连续计算NULL数

我不确定是否有更整洁的方法,但这应该可行:

SELECt Field1, Field2, ISNULL(Field1) + ISNULL(Field2) Num_NullFROM   YourTable;

测试用例:

CREATE TABLE YourTable (Field1 varchar(10), Field2 varchar(10));INSERT INTO YourTable VALUES (NULL, 'A');INSERT INTO YourTable VALUES ('B', 'C');INSERT INTO YourTable VALUES ('B', NULL);INSERT INTO YourTable VALUES (NULL, NULL);

结果:

+--------+--------+----------+| Field1 | Field2 | Num_Null |+--------+--------+----------+| NULL   | A      |        1 || B      | C      |        0 || B      | NULL   |        1 || NULL   | NULL   |        2 |+--------+--------+----------+4 rows in set (0.00 sec)

更新: 除了更新的问题:

如果您的表中的列看起来像

affiliate_1
affiliate_2
等,则这不是一个好主意,因为您会将数据与元数据混合。通常,建议的解决方案是将另一个从属表用于用户与关联关系,如以下示例所示:

CREATE TABLE users (   user_id int,    user_name varchar(100),   PRIMARY KEY (user_id)) ENGINE=INNODB;CREATE TABLE users_affiliates (   user_id int,    affiliate_name varchar(100),   PRIMARY KEY (user_id, affiliate_name),   FOREIGN KEY (user_id) REFERENCES users (user_id)) ENGINE=INNODB;

然后按

users
会员数量对表格进行排序将如下所示:

SELECt    u.*, d_tb.num_affFROM      usersJOIN      (  SELECt   user_id, COUNT(*) num_aff  FROM     users_affiliates  GROUP BY user_id          ) d_tb ON (d_tb.user_id = u.user_id)ORDER BY  d_tb.num_aff DESC;

优点很多,但是最重要的是,它使上述查询更易于编写,并且足够灵活,可以与任何数量的分支机构一起使用(不受分配的列数的限制)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号