sql条件语句使用实例

数据库 SQL Server
下文以实例的形式为您详细介绍了sql条件语句的使用方法,供您参考,如果您对sql条件语句方面感兴趣的话,不妨一看。

sql条件语句是sql语句中非常重要的,在我们平时的数据库使用中经常会用得到,在处理一些具体问题时,就可以体现出sql条件语句的优势了。

假定博客园要在首页为群组开辟一块空间,推广小组,小组能在首页显示的条件有四个:

1.       页面点击量大于10w

2.       小组人数大于1000

3.       小组帖子数大于10000

4.       小组在2007年之前创建

现在假定4个条件都满足的小组只有两个,太少了,推广位可以推广10个小组;这时候运营人员要求这4个条件中满足3个但是第4个条件不满足的小组算符合条件的小组,如果4个条件都满足就认为这个小组太火了,不需要在首页推广它了。业务逻辑想清楚了,下一步就该写代码了,数据逻辑层的代码的任务假定交给我了,我要考虑满足4个条件中3个成立的sql怎么写。

为了叙事方便,我们假如小组表的名字为Group,相关的条件字段是Pv,UserCount,PostCount,CreateTime:分别表示小组的点击量,人数,帖子数,创建时间.

写sql语句,上面的四个条件满足至少3个,有多少种情况呢?这是一个组合问题,一共有多少种的公式我已经忘记了,我要根据感觉写写看:

  1. SELECT * FROM Group  
  2. WHERE  (Pv>100000 AND UserCount>1000 AND PostCount>10000 AND CreateTime > 20070101)   
  3. OR (Pv>100000 AND UserCount>1000 AND PostCount<10000 AND CreateTime < 20070101)  
  4. OR (Pv>100000 AND UserCount<1000 AND PostCount>10000 AND CreateTime < 20070101

这个Sql语句条件还行,但是我们的题目是n个条件m个条件成立,如果多了还这么写,恐怕就很累了,能不能改进呢?答案是肯定的。

  1. SELECT * FROM Group  
  2. WHERE   
  3. (CASE Pv WHEN Pv>100000 THEN 1 ELSE 0 END) --这是PV的条件成立则为1,否则为0  
  4. +(CASE UserCount WHEN UserCount > 1000 THEN 1 ELSE 0 END) --用户数条件  
  5. +(CASE PostCount WHEN PostCount > 10000 THEN 1 ELSE 0 END) --帖子数条件  
  6. +(CASE CreateTime WHEN CreateTime < 20070101 THEN 1 ELSE 0 END) --时间条件  
  7. = 3 

 如果上面的三个表达式加起来值是3就说明恰好满足三个条件,如果是两个条件就是等于2,如果扩展为n个条件m个条件成立也很容易写,很容易维护、修改。 

这是一个sql条件语句的技巧,希望对你有用。

 

 

【编辑推荐】

SQL Where子句的妙用

解读SQL嵌套子查询

SQL强类型查询的实现

SQL查询效率的讨论

SQL动态查询的示例

责任编辑:段燃 来源: 博客园
相关推荐

2010-09-17 14:48:28

SQL条件语句

2010-09-03 14:56:12

SQLSELECT语句

2010-09-07 14:56:49

SQL语句CASE WHEN

2010-09-13 17:11:42

sql server

2010-10-21 14:27:35

SQL Server时

2010-09-09 16:34:19

SQL循环while

2010-09-25 16:42:45

sql语句

2010-09-10 14:33:32

SQL循环语句

2021-06-09 10:45:12

JavaScript开发 编程

2010-11-11 11:37:22

SQL SELECT语

2010-09-25 11:02:33

SQL主键

2010-09-17 16:53:14

SQL中CREATE

2010-09-14 10:16:57

sql server

2011-04-27 16:34:06

withSQL Server

2010-09-03 13:21:01

SQL删除

2010-09-07 10:56:58

SQL语句

2011-08-18 14:25:26

OracleEXPLAIN PLA

2010-09-07 13:50:41

SQL语句

2010-09-07 11:24:25

SQL语句

2010-09-25 16:32:02

SQL语句
点赞
收藏

51CTO技术栈公众号