少见的语法

读《高性能MySql》这本书,md,里面很多的sql语句都不懂什么意思!!!故再次记录。

ON DUPLICATE KEY UPDATE

INSERT INTO daily_hit_counter(day,slot,cnt) 
    VALUES(CURRENT_DATE,RAND()*100,1) 
    ON DUPLICATE KEY UPDATE cnt=cnt+1;

在insert语句末尾指定了 ON DUPLICATE KEY UPDATE ,那么如果在执行插入的时候导致一个UNIQUE或者主键重复,则在旧数据的基础上执行update操作,操作内容下载UPDATE 关键字后面。

USING()

UPDATE daily_hit_counter as c 
    INNER JOIN(
        SELECT day,SUM(cnt) as cnt,MIN(slot) AS mslot
        FROM daily_hit_counter
        GROUP BY day
    ) AS x USING(day)
SET c.cnt = IF(c.cnt=x.mslot,x,cnt,0),
    c.slot = IF(c.slot=x.mslot,0,c.slot);

using()相当于join操作中的on。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值