当前位置:首页 » 编程语言 » sql好难写

sql好难写

发布时间: 2024-09-10 02:55:10

⑴ 求助,一个sql语句不会写,跪求帮助啊

--测试表
CreateTableusers
(
nameVarchar(10),
sumscoreint
)

CreateTablesales
(
nameVarchar(10),
scoreint
)

--合并在一起的触发器,批量对sales做增删改都没问题,楼上的写法嘛,嘿嘿
--但有个问题,你的name是关键字,你如果修改name,该怎么处理?
CreateTriggertr_salesonsales
ForInsert,Delete,Update
As
Begin
mergeintousersM
using
(
Selectname,Sum(isnull(score,0))Asscore
From
(
Selectname,scoreFrominserted
Unionall
Selectname,-1*scoreFromdeleted
)S
GroupByname
)N
onM.name=N.Name
WhenmatchedThen
updateSetM.sumscore=M.sumscore+N.score
WhenNotmatchedThen
InsertValues(N.Name,N.score);
End

⑵ 怎么提高写sql语句的能力

不建议在工作中写很复杂的sql语句 这样会让代码复用率降低很多 而且不易后期维护和扩展 建议把复杂的sql语句拆分成多个简单的语句 封装成存储过程 这样会比较好 而且大量的多表查询会让系统延迟很高 容易死锁

⑶ 写sql完全没思路,求sql大佬

首先,业务逻辑有点不清晰,现在假设第一道工序是开浇,开浇有开浇时间和结束时间,结束后在进行停浇工序,停浇有开浇时间和停浇时间。
目前来看,从你给出的数据,开浇和停浇,没有必然的联系,但是从数据分析,从开浇开始到开浇结束,至少用一个整天,而停浇开始时间一定是在开浇结束当天进行的,并且同一个中包号,每次停浇结束后,当天是不会在开浇的。
有了这些条件,应该可以查询了。定义以上的查询结果是表table
select * from table a,table b
where substr(a.停浇时间,1,10)=substr(b.开浇时间,1,10) and a.中包号=b.中包号

热点内容
编程linux系统 发布:2025-04-05 06:04:14 浏览:249
表格如何增减密码 发布:2025-04-05 06:00:33 浏览:191
存储卡sandisk 发布:2025-04-05 06:00:26 浏览:38
dll编译出错求助 发布:2025-04-05 05:59:44 浏览:709
模拟人生java 发布:2025-04-05 05:53:58 浏览:553
日本免费云服务器色 发布:2025-04-05 04:58:52 浏览:865
linuxcpp 发布:2025-04-05 04:53:38 浏览:748
安卓字体哪个最好 发布:2025-04-05 04:46:37 浏览:650
什么是hdb3码编译码 发布:2025-04-05 04:40:20 浏览:504
编译原理运算符 发布:2025-04-05 04:37:50 浏览:521