mysql>SELECT CASE 1 WHEN 1 THEN 'one'
->WHEN 2 THEN 'two' ELSE 'more' END
->'one'
mysql>SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END
->'true'
mysql>SELECT CASE BINARY 'B'
->WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
->NULL
你用case when 函数试试。
打字不易,如满意,望采纳。
复盘一下前两天MySQL的一道笔试题。
建表语句为:
这是典型的行转列 *** 作。方法有以下两种:
注意:max() 是为了能够使用 group by 根据 id 进行分组,因为每一个 id 对应的course = '语文' 的记录只有一条,所以 max() 的值就等于对应那一条记录的 score 的值。 因此sum()、min()、avg()等聚合函数都可以达到行转列的效果。
若要实现对每一列也求和,可以使用with rollup直接生成结果。
#这句试试看select m.users,m.row_value '名字',a.row_value '年龄',d.row_value '住址' from
(select users ,row_value from test where row_key='名字') m,
(select users,row_value from test where row_key='年龄') a,
(select users ,row_value from test where row_key='住址') d
where m.users=a.users and m.users=d.users
#下面这个是创建表和插入数据
DROP TABLE IF EXISTS `test`
CREATE TABLE `test` (
`id` int(4) NOT NULL,
`users` char(2) DEFAULT NULL,
`row_key` varchar(20) DEFAULT NULL,
`row_value` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', '甲', '名字', '张三')
INSERT INTO `test` VALUES ('2', '甲', '年龄', '30')
INSERT INTO `test` VALUES ('3', '甲', '住址', '上海')
INSERT INTO `test` VALUES ('4', '已', '名字', '张三2')
INSERT INTO `test` VALUES ('5', '已', '年龄', '40')
INSERT INTO `test` VALUES ('6', '已', '住址', '上海2')
INSERT INTO `test` VALUES ('7', '丙', '名字', '张三1')
INSERT INTO `test` VALUES ('8', '丙', '年龄', '50')
INSERT INTO `test` VALUES ('9', '丙', '住址', '上海1')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)