表结构如下:
-------------------------------------------
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查询后更新
- MYSQL数据库数据同步
- MYSQL的一些小问题。
- mysql 插入十万以上数据速度变慢
- 启动PostgresSL出现的问题:could not bind IPv6 socket
- 急急急!Delphi BDE + MySQL, 一个简单问题。
- 为什么我的webapp程序经过若干段时间之后会出现communication link failure的问题。
- 怎样让mysql支持特殊字符?
- 能不能每天凌晨删除指定表中前7天的所有数据
- MariaDB 安装后怪异问题,请大神看看!
- WampServer(PHP + Apache + Mysql)提供掉cmd的功能吗?
alter table test modify `sex` tinyint(1) NULL;
执行完这个你再查就正确了,貌似 IS NULL 偷懒了,如果列定义为 NOT NULL,就固定判断不会有 NULL 值,没有考虑 ROLLUP 这种情况