case when then和insert select组合查询添加记录
2009-10-29 16:15
316 查看
比如在更改帖子状态时(0未审核,1审核)
create proc QwqSubjectState_Update
(
@suId int
)
as
update QwqSubject set suState=case suState when 0 then 1 when 1 then 0 end where suId=@suId
下面的例子不仅说明case when then 的用法,也说明insert 后直接写select将查询出来的记录添加进去
Code
insert into QsqStock.dbo.StockChatAuto(type,question,answer)
select type = (case a.qClassId when 1 then '银行理财产品' when 3 then '保险' when 4 then '基金' when 5 then '股票' else '' end) , a.qTitle,b.aAnswerContent
from newcnqsq.dbo.QsqAskQuestion a
inner join newcnqsq.dbo.QsqAskAnswer b
on a.qId = b.aQId
where a.qClassId = 1 or a.qClassId = 3
下面具体说明case when then 的用法
CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。
首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:
在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:
这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:
你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:
注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。
除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
create proc QwqSubjectState_Update
(
@suId int
)
as
update QwqSubject set suState=case suState when 0 then 1 when 1 then 0 end where suId=@suId
下面的例子不仅说明case when then 的用法,也说明insert 后直接写select将查询出来的记录添加进去
Code
insert into QsqStock.dbo.StockChatAuto(type,question,answer)
select type = (case a.qClassId when 1 then '银行理财产品' when 3 then '保险' when 4 then '基金' when 5 then '股票' else '' end) , a.qTitle,b.aAnswerContent
from newcnqsq.dbo.QsqAskQuestion a
inner join newcnqsq.dbo.QsqAskAnswer b
on a.qId = b.aQId
where a.qClassId = 1 or a.qClassId = 3
下面具体说明case when then 的用法
CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。
首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:
SELECT <myColumnSpec> = CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <somethingB> ELSE <somethingE> END |
USE pubs GO SELECT Title, 'Price Range' = CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END FROM titles ORDER BY price GO |
SELECT 'Number of Titles', Count(*) FROM titles GROUP BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END GO |
USE pubs GO SELECT CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END AS Range, Title FROM titles GROUP BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END, Title ORDER BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END, Title GO |
除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
相关文章推荐
- case when then和insert select组合查询添加记录
- sql文学习.....关于条件判断的查询....case-when-then
- SQL之分情况的子查询 -- case when then
- select中case-when-then用法
- SQL:SELECT .. CASE ..WHEN .. CONDITION THEN VALUE
- Mysql query select case when true insert
- 数据库学习--sql多条件查询case when then
- 一个复杂的mysql查询语句(case,when,then,left join )
- MYSQL 多条件查询(case when then else end)案例
- 数据记录的操作(insert,select,update,delete)函数和分组查询(group by),表连接(join on),嵌套查询(in)
- [原创]存储过程,insert,case when then,处理性别问题
- mysql操作查询结果case when then else end用法举例
- Oracle 查询中判断语句的写法case when then else end
- 4.3插入记录 INSERT 查询数据库记录 SELECT
- 实际——如何给SQL查询添加合计行(sqlserver2008。但是db2的case when 语句end后不能添加其他字段)
- 一条insert语句批量插入多条记录 AND 多条件游标更新 变CASE WHEN更新法提高速度
- SQL CASE When THEN END 行列转换,复杂查询
- 多条件情况查询,sql select case when when else
- mysql操作查询结果case when then else end用法举例
- sql文学习.....关于条件判断的查询....case-when-then