详细描述如:http://blog.csdn.net/seven_cm/article/details/41527505
结果集只有1和0,为什么结果是不一样的?
mysql中case条件中case when 1 then xxx 与 case when a>0的结果不一样的疑惑
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- ACMAIN_CHM 2014-12-28 11:47关注
楼主的误区是在 case status when status>0 then 1 else 0 end 上,正规的写法是 case status when 0 then 1 else 0 end 注意这里是没有 status>0的。 需要注意和区分CASE的两种语法的不同。 CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END 当使用了CASE value这种格式,则MYSQL会对 value 与后面的每个 compare_value 进行比较。 而楼主在语句中正是使用的 CASE value这种格式 所以当 case status when status>0 then 1 else 0 end 时,要意识到 when status>0 这里不是条件,是值。举例来说。比如第一条记录 +-----+-----+--------+ | uid | tid | status | +-----+-----+--------+ | 1 | 1 | 0 | 这条件中 status=0 则 case status when status>0 then 1 else 0 end 被处理为 case 0 when 0>0 then 1 else 0 end, 而0>0 逻辑运算的结果是 false 为 0 , 所以语句为 case 0 when 0 then 1 else 0 end 这样运算的结果为 1 其实看一下这个结果应该会更容易理解问题出在哪儿了。 mysql> select tid,status,status>0 v1,status>=0 v2, -> case status when status>0 then 1 else 0 end as c1, -> case status when status>=0 then 1 else 0 end as c2 -> from case_test; +-----+--------+------+------+------+------+ | tid | status | v1 | v2 | c1 | c2 | +-----+--------+------+------+------+------+ | 1 | 0 | 0 | 1 | 1 | 0 | | 2 | 0 | 0 | 1 | 1 | 0 | | 3 | 0 | 0 | 1 | 1 | 0 | | 4 | 0 | 0 | 1 | 1 | 0 | | 5 | 0 | 0 | 1 | 1 | 0 | | 6 | 0 | 0 | 1 | 1 | 0 | | 7 | 0 | 0 | 1 | 1 | 0 | | 8 | 0 | 0 | 1 | 1 | 0 | | 9 | 0 | 0 | 1 | 1 | 0 | | 10 | 0 | 0 | 1 | 1 | 0 | | 11 | 1 | 1 | 1 | 1 | 1 | | 12 | 1 | 1 | 1 | 1 | 1 | | 13 | 1 | 1 | 1 | 1 | 1 | | 14 | 1 | 1 | 1 | 1 | 1 | | 15 | 1 | 1 | 1 | 1 | 1 | | 16 | 1 | 1 | 1 | 1 | 1 | | 17 | 1 | 1 | 1 | 1 | 1 | | 18 | 1 | 1 | 1 | 1 | 1 | | 19 | 1 | 1 | 1 | 1 | 1 | | 20 | 1 | 1 | 1 | 1 | 1 | +-----+--------+------+------+------+------+ 20 rows in set (0.02 sec) mysql>
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能
- ¥15 jmeter脚本回放有的是对的有的是错的
- ¥15 r语言蛋白组学相关问题
- ¥15 Python时间序列如何拟合疏系数模型