加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sql-计算连续的NULL数

发布时间:2021-01-28 16:24:11 所属栏目:MySql教程 来源:网络整理
导读:有没有一种方法可以获取表示一行中NULL字段数的列?这将在SELECT语句中. 例如: Field1 Field2 Num_Null-----------------------NULL "A" 1 更新:我想要此查询,以便我可以基于给定书的有多少会员销售进行排序.因此,无论哪个会员,拥有3个会员的排名都会高于

有没有一种方法可以获取表示一行中NULL字段数的列?这将在SELECT语句中.

例如:

Field1  Field2  Num_Null
-----------------------
NULL     "A"      1

更新:我想要此查询,以便我可以基于给定书的有多少会员销售进行排序.因此,无论哪个会员,拥有3个会员的排名都会高于拥有2个会员的排名.我的数据库中大约有七个会员,并且会不断增长.因此,任何要求指定每个会员字段的查询都可能太长

桌子:

Affiliates_Cache-主键是Affiliate_ISBN,具有该书在各个分支机构上的价格(如果不存在,则为NULL). Affiliates_Cache是??我要计算NULL数的那个

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

SELECT Field1,Field2,ISNULL(Field1) + ISNULL(Field2) Num_Null
FROM   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;

然后按会员数量对用户表进行排序将如下所示:

SELECT    u.*,d_tb.num_aff
FROM      users
JOIN      (
             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;

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

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读