sql中的扩展学习

1.

使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误。 


 DELETE FROM tab1 WHERE  id = ( SELECT MAX(id ) FROM tab1 ); 
ERROR 1093 (HY000): You can’t specify target table ‘tab1′ for update in FROM clause 

 

 

针对“同一张表”这个限制,撇开效率不谈,多数情况下都可以通过多加一层select 别名表来变通解决

 

 

 

2.删除重复的数据并且保留一条

delete from cst_customer where cst_name in (select cst_name from (SELECT  cst_name  FROM cst_customer GROUP BY cst_name having COUNT(cst_name)>1)aa)

and cst_id not in (select cst_id from (select min(cst_id) cst_id  from cst_customer GROUP BY cst_name having COUNT(cst_name)>1) qq);

3.SELECT * FROM `cst_customer` order by if(cst_id=3,0,1),cst_id;

 可以将cst_id=3放在最前面,其他按照排序

4.SELECT * FROM `cst_customer` order by field(cst_name,'wsn','4','3','a');

会将'wsn','4','3','a'按照顺序在最后展示

5.select REPLACE(cst_name,'-','.') from  cst_customer  

查询结果将cst_name 字段中的'-'替换为'.'

6. alter table t_resource add attachment_url VARCHAR(1000) Not null comment "附件url";
添加字段  comment  注释       字符集、排序规则有默认的

7.insert  into  aa(   )时如果    aa里少写个字段  字段如果可为null没问题,不可为null报错

 


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值