少见的语法

读《高性能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。

猜你喜欢

转载自blog.csdn.net/u010715440/article/details/79504090