上面这句是会错的
除了
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end) as ck from table a where a.djzt=1 or a.djzt=2 ;
select * from (
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end) as ck from table a ) b where b=1
有没有简单一点的
8 个解决方案
#1
select 1 as ck from table a where a.djzt=1 in(1,2)
#2
方法也不错
#3
同意,简单啊
#4
select 1 as ck from table where djzt in (1,2)
select 1 as ck from table where djzt between 1 and 2
select 1 as ck from table where djzt=1 or djzt=2
#5
不理解楼主得到一列都是1 有什么用?
#6
首先出错是where后面用别名是不对的,直接where a.djzt=1就可以了
后面where a.djzt in (1,2)和a.djzt between 1 and 2都可以用,效率都差不多
#7
对的,这是一个恒等式,除非是没有符合条件的记录,否则永远等于1,不会等于0
#8
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end) as ck from table a where ck=1
其实省掉了其他字段,本意是想修改 where ck=1 这个条件 来得到对应记录
其实省掉了其他字段,本意是想修改 where ck=1 这个条件 来得到对应记录
#1
select 1 as ck from table a where a.djzt=1 in(1,2)
#2
方法也不错
#3
同意,简单啊
#4
select 1 as ck from table where djzt in (1,2)
select 1 as ck from table where djzt between 1 and 2
select 1 as ck from table where djzt=1 or djzt=2
#5
不理解楼主得到一列都是1 有什么用?
#6
首先出错是where后面用别名是不对的,直接where a.djzt=1就可以了
后面where a.djzt in (1,2)和a.djzt between 1 and 2都可以用,效率都差不多
#7
对的,这是一个恒等式,除非是没有符合条件的记录,否则永远等于1,不会等于0
#8
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end) as ck from table a where ck=1
其实省掉了其他字段,本意是想修改 where ck=1 这个条件 来得到对应记录
其实省掉了其他字段,本意是想修改 where ck=1 这个条件 来得到对应记录