select一个as 语句的where 条件

时间:2020-12-26 21:54:08
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end)  as ck from table a where ck=1;
上面这句是会错的
除了
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


引用 1 楼 zy112429 的回复:
SQL code
select 1 as ck from table a where a.djzt=1 in(1,2)
同意,简单啊

#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


引用楼主 vchalf_moon 的回复:
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end) as ck from table a where ck=1;
上面这句是会错的
除了
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……

首先出错是where后面用别名是不对的,直接where a.djzt=1就可以了
后面where a.djzt in (1,2)和a.djzt between 1 and 2都可以用,效率都差不多

#7


引用 5 楼 maco_wang 的回复:
不理解楼主得到一列都是1 有什么用?

对的,这是一个恒等式,除非是没有符合条件的记录,否则永远等于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 这个条件 来得到对应记录

#1


select 1 as ck from table a where a.djzt=1 in(1,2)

#2


方法也不错

#3


引用 1 楼 zy112429 的回复:
SQL code
select 1 as ck from table a where a.djzt=1 in(1,2)
同意,简单啊

#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


引用楼主 vchalf_moon 的回复:
select (case when a.djzt=1 or a.djzt=2 then 1 else 0 end) as ck from table a where ck=1;
上面这句是会错的
除了
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……

首先出错是where后面用别名是不对的,直接where a.djzt=1就可以了
后面where a.djzt in (1,2)和a.djzt between 1 and 2都可以用,效率都差不多

#7


引用 5 楼 maco_wang 的回复:
不理解楼主得到一列都是1 有什么用?

对的,这是一个恒等式,除非是没有符合条件的记录,否则永远等于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 这个条件 来得到对应记录