我犯过的SQL语句错误(不断更新中……)
来源:互联网 发布:kali重启网络命令 编辑:程序博客网 时间:2024/06/06 05:58
1.建临时表
create table #temp (Cyear int, Cmonth int ,Cscore double)
错误信息:
消息 102,级别 15,状态 1,第 1 行
')' 附近有语法错误。
错误原因:没有 double型啊!还是说double型有别的意思所以被识别出来了?这个留待研究,反正,正确代码是:
create table #temp (Cyear int, Cmonth int ,Cscore float)
2.跨数据库连接多张表。
问题描述:有A,B两个数据库,将数据库A中的表a,表b,表c跟数据库B中的表d进行等值连接(表d里面含有跟表a,表b,表c相同的列),并且表a还跟自己做了一次自连接。
然后郁闷的事情出现了,
执行完语句,影响行数为190行。
在where语句里面加了一个限制之后(这个限制本来加跟不加都不影响结果的),再执行sql语句,影响行数变成了200行!(正常情况下增加where语句的限制,影响行数不减少也不至于增加吧……?)
并且,执行(加限制过的sql语句)except(没有加限制过的sql语句),影响行数为0行。
后来改写了SQL语句,让数据库A里面的表先完成各种自连接呀等值连接之类的,得到的查询结果再跟数据库B的表d进行连接,就没有问题了。
结论:跨数据库连接很多张表的时候,尽量将在同一个数据库里面的表放在一起处理,再连接这些处理过的结果进行再处理。
3.union 与 union all
问题描述:执行ex1.sql的select语句,选出了100行数据。
执行ex2.sql的select语句,选出了200行数据。
然后我将ex1.sql的语句跟ex2.sql的语句放在了一起,用union拼起来,执行之后,只选出了280行的数据,中间损失的20行数据去哪里了呢?
调查了一下发现ex1.sql筛选出来的数据跟ex2.sql筛选出来的数据相同的时候,有些数据就被“消失”了。
将union 改成 union all,就没有问题了。
结论:以后遇到要将很多的select语句的结果拼起来的时候,一定要用union all而不是union啊~
4.做到日期,时间的增减之类的,要用dateadd函数。
例如:求明天的日期。
不好的例子:
select getdate()+1
正确的例子:
select dateadd(dd,1,getdate())
5.使用到关于星期的判断的时候,要看看系统的语言设置。
具体参考:http://blog.csdn.net/zhuoruling/article/details/5028309
自己觉得常用的一些关于星期的写法
--查看当前使用的语言--select @@language--设置语言为中文(原来全局变量的设置是这样的啊)--set language '简体中文'--设置星期五为一周开始的第一天--set datefirst 5--查看一周开始的第一天select @@datefirst--查看今天是一周的第几天select datepart(dw,getdate())--查看今天星期几select datename(dw,getdate())--削除datefirst的影响,让一个星期都从星期七开始,--也就是,星期七为1,星期一为2这样子......--ps.最后注意一下cast的写法......select datepart(dw,cast ('20120305' as datetime) + @@datefirst);
- 我犯过的SQL语句错误(不断更新中……)
- 我的SQL语句应用(不断更新)
- 我犯过的错误-代码易错点
- 常用的SQL语句(不断更新中......)
- 犯过的错误
- 犯过的错误
- 犯过的错误
- 犯过的错误
- MFC编程中的常犯的错误和心得总结(不断更新中)
- 那些我在jsp自定义标签中犯过的拼写错误
- 那些年我所犯过的错误
- 蔺德刚:我在营销上犯过的四大错误
- 那些我曾经犯过的低级编程错误
- 那些年我犯过的c++sb错误
- SQL语句的各种写法(不断更新中)
- 记录下我曾经犯过的错误,时刻提醒着自己(也包括一些小技巧,未完,待续……)
- 我(作为一名开发者)所犯过的错误
- SQL语句学习(不断更新中。。。。。。)
- Linux内核入门集(续2)
- HOJ Journey to Tibet(小毛病大问题,下标搞混了,导致很严重的后果)
- haproxy工作流程分析
- 绕过文件系统过滤驱动和钩子
- Redis几个认识误区
- 我犯过的SQL语句错误(不断更新中……)
- Linux下如何发布Qt程序
- 总结敏捷合作快速开发简单发布模式
- Android执行文件apk的组成结构
- socket是什么
- beyond compare添加右键快捷方式
- PHP利用Curl、socket、file_get_contents POST数据
- PHP解析JSON数据的源代码
- 利用rdiff-backup实现远程备份文件