表结构如下:
-------------------------------------------
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`sex` tinyint(1) NOT NULL,
`name` char(10) NOT NULL,
`age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-----------------------------------------------------------------------
添加如下数据:
-------------------------------------------------------------------------
INSERT INTO `test` (`id`, `sex`, `name`, `age`) VALUES
(1, 1, 'a1', 12),
(2, 0, 'b1', 13),
(3, 1, 'a1', 12),
(4, 0, 'b1', 13),
(5, 1, 'a2', 15),
(6, 0, 'b2', 16),
(7, 0, 'b3', 18),
(8, 1, 'a3', 19),
(9, 0, 'b4', 21);
------------------------------------------------------------
分别执行如下sql分组语句
--------------------------------------------------
1、
SELECT sex,
if(sex is null,'',group_concat(name)) as name1
FROM `test` group by sex with ROLLUP
--------------------------------------------------
sex name1
0 b1,b1,b2,b3,b4
1 a1,a1,a2,a3
NULL b1,b1,b2,b3,b4,a1,a1,a2,a3
--------------------------------------------
2、
SELECT sex,
if(sex is not null,group_concat(name),'') as name1
FROM `test` group by sex with ROLLUP
--------------------------------------------------
sex name1
0 b1,b1,b2,b3,b4
1 a1,a1,a2,a3
NULL
--------------------------------------------------
问题:为什么 is not null 判断出了sex不为NULL 的情况 ,而 is null 不能成功判断???
-------------------------------------------
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`sex` tinyint(1) NOT NULL,
`name` char(10) NOT NULL,
`age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-----------------------------------------------------------------------
添加如下数据:
-------------------------------------------------------------------------
INSERT INTO `test` (`id`, `sex`, `name`, `age`) VALUES
(1, 1, 'a1', 12),
(2, 0, 'b1', 13),
(3, 1, 'a1', 12),
(4, 0, 'b1', 13),
(5, 1, 'a2', 15),
(6, 0, 'b2', 16),
(7, 0, 'b3', 18),
(8, 1, 'a3', 19),
(9, 0, 'b4', 21);
------------------------------------------------------------
分别执行如下sql分组语句
--------------------------------------------------
1、
SELECT sex,
if(sex is null,'',group_concat(name)) as name1
FROM `test` group by sex with ROLLUP
--------------------------------------------------
sex name1
0 b1,b1,b2,b3,b4
1 a1,a1,a2,a3
NULL b1,b1,b2,b3,b4,a1,a1,a2,a3
--------------------------------------------
2、
SELECT sex,
if(sex is not null,group_concat(name),'') as name1
FROM `test` group by sex with ROLLUP
--------------------------------------------------
sex name1
0 b1,b1,b2,b3,b4
1 a1,a1,a2,a3
NULL
--------------------------------------------------
问题:为什么 is not null 判断出了sex不为NULL 的情况 ,而 is null 不能成功判断???
解决方案 »
- mysql数据库优化问题
- 请教一个SQL语句.
- ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger
- mysql编译出错
- 如何配置JDBC(mysql数据库)急!!!
- mysql对中文的支持好吗?
- 请问mySql中auto increment 的问题
- ASP中使用MYSQL进行多条查询的问题
- mysql使用nhibernate单向一对多映射子实体数据记录中父实体ID未同时保存
- 数据库字段显示宽度与实际存储宽度
- MariaDB 安装后怪异问题,请大神看看!
- WampServer(PHP + Apache + Mysql)提供掉cmd的功能吗?
alter table test modify `sex` tinyint(1) NULL;
执行完这个你再查就正确了,貌似 IS NULL 偷懒了,如果列定义为 NOT NULL,就固定判断不会有 NULL 值,没有考虑 ROLLUP 这种情况