常用SQL

  • 1.查询重复条数:
    • select FUNDCODE,CALIBERCODE,count(*) as count from 
      product_fund_classify group by FUNDCODE,CALIBERCODE having count>1;

       

  • 2.删除表内重复数据

    • delete from product_fund_classify 
      where id not in 
      (select a.id from ((select min(id) id from product_fund_classify group by FUNDCODE,CALIBERCODE) a));

       

  • 3.查询表内所有字段 t.xx,

    • select 't.',COLUMN_NAME,',' from information_schema.COLUMNS where table_name = '表名' and table_schema = '库名';
      
      例:select 't.',COLUMN_NAME,',' from information_schema.COLUMNS 
      where table_name = 'cust_ackflow' and table_schema = 'salebatch';

       

  • 4.批量修改列为大写SQL脚本

    • --  转大写
      SELECT
          concat( 'alter table ', TABLE_NAME, ' change column ', COLUMN_NAME, '  ', UCASE( COLUMN_NAME ), '  ', COLUMN_TYPE,' ',EXTRA,' comment "',COLUMN_COMMENT,'";' ) AS '修改脚本'
      FROM
          information_schema.COLUMNS
      WHERE
          TABLE_SCHEMA = '数据库名' and  TABLE_NAME = '表名';
      
      例:
      SELECT
          concat( 'alter table ', TABLE_NAME, ' change column ', COLUMN_NAME, '  ', UCASE( COLUMN_NAME ), '  ', COLUMN_TYPE,' ',EXTRA,' comment "',COLUMN_COMMENT,'";' ) AS '修改脚本'
      FROM
          information_schema.COLUMNS
      WHERE
          TABLE_SCHEMA = 'saleorder' AND TABLE_NAME = 'i_order_ec';
      
      
      转小写:
      SELECT
          concat( 'alter table ', TABLE_NAME, ' rename to ', LCASE( TABLE_NAME ), ';' ) AS ‘修改脚本’
      FROM
          information_schema.TABLES
      WHERE
          TABLE_SCHEMA = '数据库名'

       

  • insert语句 , 存在不插入, 不存在 在插入
    • 写法:
      insert into tree(id,name,pid) select '101','test','10' from dual where not exists(select 1 from tree where id='101');
      或者
      insert when (not exists (select 1 from tree where id='101')) then into tree(id,name,pid) select '101','test','10' from dual;
      
      
      示例:
      insert into ia_combine_market (ID,COMBINE_CODE,INIT_DATE,COMBINE_NAME,COM_INCOME_RATIO,COM_VOLAT_RATIO,COM_MAX_RETREAT_RATIO,COM_SHARPE_RATIO,COM_NET_VALUE,COM_SUM_NET_VALUE,COM_TODAY_INCOME_RATIO,COM_SUM_INCOME_RATIO,COM_MONTH_INCOME_RATIO,COM_3MONTH_INCOME_RATIO,COM_6MONTH_INCOME_RATIO,COM_YEAR_INCOME_RATIO,COM_2YEAR_INCOME_RATIO,COM_3YEAR_INCOME_RATIO,COM_5YEAR_INCOME_RATIO,COM_BENCHMARK_RATIO,COM_SUM_BENCHMARK_RATIO,COM_NET_DATE) select  '1148e245a4e14d26af99f63de88b7e73','AIJIYU','20200923','激进投资','0E-8','0E-8','0E-8','0E-8','1.00000000','1.00000000','0E-8','0E-8','0E-8','0E-8','0E-8','0E-8','0E-8','0E-8','0E-8','0E-8','0E-8','20200922' from dual  where not exists(select 1 from ia_combine_market where COMBINE_CODE = 'AIJIYU' and INIT_DATE = '20200923') ;

       

  • 删除冗余数据

    • -- 删除 冗余数据
      delete
      from IA_COMBINE_INCOME
      where ID not in (
          select id
          from (
                   select rn, id, TRANS_ACCOUNT, COMBINE_CODE, CUST_NO, TRADE_DATE
                   from (select ROW_NUMBER() OVER(PARTITION BY TRANS_ACCOUNT,COMBINE_CODE,CUST_NO,TRADE_DATE ORDER BY COMBI_INCOME_DATE DESC) rn,id,
                                TRANS_ACCOUNT,
                                COMBINE_CODE,
                                CUST_NO,
                                TRADE_DATE
                         from IA_COMBINE_INCOME)
                   where rn = 1));

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值