zoukankan      html  css  js  c++  java
  • 留念2010年6月1日——SQL

    今天做了一些SQL的题目,感觉自己还是有很多地方不足的。比如一些函数的使用,要么是函数名记不得,要么就是函数中的参数记不得,所以,决定以后多敲敲SQL代码。

    今天就先贴些被遗忘的SQL,以便以后提醒自己下次不能再犯同样的错误。 

    --返回新增的自增ID
    SELECT @@IDENTITY

    --对字段值进行判断
    CASE WHEN PersonalGrade=9 THEN 1 ELSE 0 END AS 'Names'
    SELECT CASE WHEN '字段名' IS NULL THEN '\N' ELSE CONVERT(VARCHAR(20),'字段名'END AS 'NewName' 
    --特殊情况下可以和上面是等价的
    SELECT COALESCE('字符串类型字段','\N'AS 'NewName'
    SELECT COALESCE(CONVERT(VARCHAR(20),'非字符串类型字段'),'\N'AS 'NewName'
    SELECT COALESCE(CONVERT(VARCHAR(20),NULL),'\N'AS 'NewName'

    --日期类型转换
    SELECT CONVERT(varchar(100), GETDATE(), 23)--2006-05-16

    --查询一个表内相同纪录
    SELECT * FROM 表 WHERE ID IN (SELECT ID FROM 表 GROUP BY ID HAVING SUM(1)>1)
    SELECT * FROM 表 WHERE ID1+ID2+ID3 IN(SELECT ID1+ID2+ID3 FROM 表 GROUP BY ID1,ID2,ID3 HAVING SUM(1)>1)

    记得还有一道这样的题目:查询出最低分数的记录。这样的需求最容易被认为使用top 1就可以解决了,但是在很多情况下有可能最低分数的记录有多条,这样会漏掉很多的记录。我的做法是如下,但是好像还有其它方法,不记得,如果有人知道的话可以提醒一下我。

    --只记得这个方法了.
    SELECT * FROM tableName WHERE source = (SELECT MIN(source) FROM tableName)

    今天也发现一个很有创意的SQL:复制表(只复制结构,源表名:a 新表名:b) SQL: select * into b from a where 1<>1

    其实在很多OA系统页面上的查询,通常都是会使用拼凑SQL的,那么那个and该如何处理呢?通常来说也是使用where 1=1后面就接and的条件了。 

  • 相关阅读:
    localStorage单页面及不同页面监听变动
    localstorage跨域解决方案
    eclipse下安装插件
    (转)springAOP解析-2
    (转)springAOP解析-1
    spring源码深度解析-2功能扩展
    spring源码深度解析-1核心实现
    (转)ConcurrentHashMap解析
    (转)HashMap分析
    java程序员应该掌握的技能
  • 原文地址:https://www.cnblogs.com/gaizai/p/1749970.html
Copyright © 2011-2022 走看看