CREATE TABLE TB_Test_Report
(
id int identity,
stateid int,
userid int,
username varchar(64)
) go INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (20,1,'a')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,2,'b')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (20,2,'b')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,1,'a')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,1,'a')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,3,'c')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,3,'c')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (20,1,'c')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,1,'a')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (10,1,'A')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (30,1,'a')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (30,1,'b')
INSERT INTO TB_Test_Report (stateid,userid,username) VALUES (30,1,'c')
go /**
已知语句 select * from TB_Test_Report where stateid in (10,20)
要求在语句后面增加条件(加入 and 或者 or 或者 表达式)
查询出,所有stateid =10 和 (stateid=20 并且userid = 2) 的记录
*/ SELECT *
FROM TB_Test_Report
WHERE stateid IN ( 10, 20 )
AND ( CASE
WHEN stateid = 20
AND userid <> 2 THEN 0
ELSE 1
END ) = 1

此类问题关键在于

  1. CASE WHEN 可以用于WHERE
  2. CASE WHEN 中可以使用AND 进行逻辑判断
  3. CASE WHEN 表达式最终由返回值

在where条件中使用CASE WHEN 语句的更多相关文章

  1. sql中的case when语句

    1.在where子句中: CREATE TABLE `hello`.`sometbl` ( `id` INT NOT NULL AUTO_INCREMENT , `a` VARCHAR(45) NUL ...

  2. 查询条件中,不进sql语句 也不进后台bug

    前端代码:本来代码中少写了value="1",后来加上value值之后,可以正常进方法 <div class="row"> <label cl ...

  3. SQLServer2008 在where条件中使用CASE WHEN

    create table #temp(    id int identity(1,1),    name varchar(20),    startYear int,    startMonth in ...

  4. sql中case when语句的使用-来自网摘文章

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  5. hive中使用case、if:一个region统计业务(hive条件函数case、if、COALESCE语法介绍:CONDITIONAL FUNCTIONS IN HIVE)

    前言:Hive ql自己设计总结 1,遇到复杂的查询情况,就分步处理.将一个复杂的逻辑,分成几个简单子步骤处理. 2,但能合在一起的,尽量和在一起的.比如同级别的多个concat函数合并一个selec ...

  6. linux条件测试操作(test)和if判断语句,while循环语句,break控制语句和for循环和case多分枝语句和select语句

    条件测试操作 条件测试是专为影响"$?"的操作,是条件转移.循环语句的基础   test测试命令: test 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0, ...

  7. 数据库SQL之学习SUM总和套用条件CASE WHEN语句

    1.SQL之学习SUM总和套用条件CASE WHEN语句 2.条件语句CASE WHEN 格式已经在图中写的很明白了 -- 查询t_wzw库中所有数据 总和(条件为t_wzw.birthday > ...

  8. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

  9. sql中case when语句的使用

    case when语句有两种格式:简单case函数和搜索case函数. --简单Case函数CASE sexWHEN '1' THEN '男'WHEN '2' THEN '女'ELSE '其他' EN ...

随机推荐

  1. ActiveXObject函数详解

    什么是 ActiveX 控件? ActiveX 控件广泛用于 Internet.它们可以通过提供视频.动画内容等来增加浏览的乐趣.不过,这些程序可能出问题或者向您提供不需要的内容.在某些情况下,这些程 ...

  2. 【转】Flexbox——快速布局神器

    原文转自:http://www.w3cplus.com/css3/flexbox-basics.html 简介 在很多方面HTML和CSS是一个强大的内容发布机制——易学.灵活和强大.但复杂的布局是他 ...

  3. 网络编程-socket

    本节内容: 一:TCP/IP:Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议.即通讯协议.是主机接入互联网以及互联网中两台 ...

  4. [转]设置Android手机以使用ARM Streamline进行性能分析(一)

    本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址     Posted by Fang Bao,(鲍方) 4 Comments 11 J ...

  5. iOS常用设计模式和机制之Block简单使用

    Block :block 实际上就是 Objective-C语言对闭包的实现 闭包(Closure):闭包就是一个函数,或者一个指向函数的指针,加上这个函数执行的非局部变量.闭包允许一个函数访问声明该 ...

  6. UIControlEventTouch

    在控件事件中,简单解释下下面几个事件. 说明:由于是在“iOS 模拟器”中测试的,所以不能用手指,只能用鼠标. 1)UIControlEventTouchDown 指鼠标左键按下(注:只是“按下”)的 ...

  7. jquery.cookie() 方法的使用(读取、写入、删除)

    一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件. ...

  8. TRUNCATE,DORP,DELETE

    TRUNCATE,DORP,DELETE 相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删 ...

  9. 转-利用Oracle审计功能来监测试环境的变化

    http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...

  10. Java--RuntimeException(运行时异常)

    [转载自]:http://blog.csdn.net/qq7342272/article/details/7940741 java运行时异常是可能在java虚拟机正常工作时抛出的异常. java提供了 ...