zoukankan      html  css  js  c++  java
  • 常见sql 写法总结

    1. 关于如何获取1对多数据中最大条数据的写法

        例子: 

          LEFT JOIN ( SELECT *

    FROM table AS n1
    WHERE 
    n1.ID IN
    (
      SELECT MAX(id) FROM table AS n2 GROUP BY n2.House_ID
    )
    ) ne ON ne.House_ID = C.Null1

        通过两层的嵌套,group by 分组获取最大值,然后通过 in 方法来查询其他信息

    2、查询是否有断的ID

    SELECT * FROM 
    dbo.table  AS a
    WHERE a.ID+1
    NOT IN
    (
    SELECT b.ID FROM dbo.table  AS b

    3、上下两条数据合成一条带时间的数据

    SELECT DISTINCT ISNULL(fybl2.ZYRQ,'1900-01-01') AS ZYRQ1,fybl1.* FROM T_FYBL AS fybl1
    LEFT JOIN dbo.T_FYBL AS fybl2 ON fybl1.YJ_ID=fybl2.YJ_ID AND fybl1.ID>fybl2.ID AND fybl1.JSM=fybl2.JSM

    4、空值,null值,0值,0.0值等筛选处理

    or ISNULL(AC.CommissionAmount,'0') NOT IN('','0','0.00')

    5、获取系统数据字典:

    --表描述
    SELECT tbs.name 表名,ds.value 描述
    FROM sys.extended_properties ds
    LEFT JOIN sysobjects tbs ON ds.major_id=tbs.id
    WHERE ds.minor_id=0 AND tbs.type='U'

    --快速查看表结构

    --表描述
    --SELECT tbs.name 表名,ds.value 描述
    --FROM sys.extended_properties ds
    --LEFT JOIN sysobjects tbs ON ds.major_id=tbs.id
    --WHERE ds.minor_id=0 AND tbs.type='U'

    --快速查看表结构
    SELECT CASE WHEN col.colorder = 1 THEN obj.name
    ELSE ''
    END AS 表名 ,
    CASE WHEN col.colorder = 1 THEN ISNULL(epTwo.[value], '')
    ELSE ''
    END AS 表说明 ,
    col.colorder AS 序号 ,
    col.name AS 列名 ,
    ISNULL(ep.[value], '') AS 列说明 ,
    t.name AS 数据类型 ,
    col.length AS 长度 ,
    ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
    CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
    ELSE ''
    END AS 标识 ,
    CASE WHEN EXISTS ( SELECT 1
    FROM dbo.sysindexes si
    INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
    AND si.indid = sik.indid
    INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
    AND sc.colid = sik.colid
    INNER JOIN dbo.sysobjects so ON so.name = si.name
    AND so.xtype = 'PK'
    WHERE sc.id = col.id
    AND sc.colid = col.colid ) THEN '√'
    ELSE ''
    END AS 主键 ,
    CASE WHEN col.isnullable = 1 THEN '√'
    ELSE ''
    END AS 允许空 ,
    ISNULL(comm.text, '') AS 默认值
    FROM dbo.syscolumns col
    LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype
    INNER JOIN dbo.sysobjects obj ON col.id = obj.id
    AND obj.xtype = 'U'
    AND obj.status >= 0
    LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id
    LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id
    AND col.colid = ep.minor_id
    AND ep.name = 'MS_Description'
    LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
    AND epTwo.minor_id = 0
    AND epTwo.name = 'MS_Description'

    where charindex('T_',obj.name)>0
    ORDER BY obj.name;

  • 相关阅读:
    sql server中sql语句中单引号怎么转义?【转】
    如何配置Eclipse+Tomcat 开发环境【转】
    JBoss和Tomcat版本、及Servlet、JSP规范版本对应一览 【转】
    P1955 [NOI2015]程序自动分析 && 离散化学习 && lower_bound学习
    P1604 B进制星球
    [OI
    [OI
    Aiyi's Code Style for OI
    POJ1186 方程的解数
    [Daily Life]百首好歌
  • 原文地址:https://www.cnblogs.com/ransom/p/7028321.html
Copyright © 2011-2022 走看看