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的条件了。 

  • 相关阅读:
    高性能JavaScript DOM编程
    浏览器缓存机制浅析
    高性能JavaScript 循环语句和流程控制
    高性能JavaScript 编程实践
    HTML5 postMessage 跨域交换数据
    纠结的连等赋值
    从setTimeout谈JavaScript运行机制
    闭包拾遗 & 垃圾回收机制
    闭包初窥
    Odoo中如何复制有唯一性约束的记录?
  • 原文地址:https://www.cnblogs.com/gaizai/p/1749970.html
Copyright © 2011-2022 走看看