where 带条件的判断
id mark age
1 0 90
1 0 80
1 1 6
1 1 2
1 2 28
1 2 50
我想实现的是
当mark=0的时候,删除age> 3的计录
当mark=1的时候,删除age> 30的计录
当mark=2的时候,删除age> 80的计录
执行完SQL语句后
数据库应该是
id mark age
1 0 80
1 1 2
1 2 28
我自己写的是
delete table where
case
WHEN mark = '0 ' THEN age> '3 '
WHEN mark = '2 ' THEN age> '30 '
else THEN age> '90 '
end
可以不行,谁能帮 我学一个带条件判断的类似的语句啊
------解决方案--------------------delete 表名
where (mark = '0 ' and age> '3 ') or (mark = '2 ' and age> '30 ') or (age> '90 ')
--如果是数值型
delete 表名
where (mark =0 and age> 3) or (mark =2 and age> 30) or (age> 90)
------解决方案--------------------delete from table
where age> case when mark=0 then 80 when mark=1 then 3 when mark=2 then 30 else age end
mark age case...end 后的值 是否删除
0 79 80 否
0 80 80 否
0 81 80 是
1 2 3 否
1 3 3 否
1 4 3 是
2 29 30 否
2 30 30 否
2 31 30 是
------解决方案--------------------declare @mark int
select @mark=case when 0 then 'age> 3 '
case when 2 then 'age> 30 '
else 'age> 90 '
end
exec( 'delete table where '+@mark)