Mysql 實用sql語句(一)

(1)如果有,則刪除後再insert;如果沒有,直接insert。

REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

若id=1的記錄不存在,REPLACE語句將插入新記錄,否則,當前id=1的記錄將被刪除,然後再插入新記錄。

(2)如果有,就update;如果沒有,就insert。

INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;

若id=1的記錄不存在,INSERT語句將插入新記錄,否則,當前id=1的記錄將被更新,更新的字段由UPDATE指定。

(3)如果有,則什麼都不幹;如果沒有,則insert 插入新紀錄。

INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

若id=1的記錄不存在,INSERT語句將插入新記錄,否則,不執行任何操作。

(4)快照:如果想要對一個表進行快照,即複製一份當前表的數據到一個新表,可以結合CREATE TABLE和SELECT。

CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;

對class_id=1的記錄進行快照,並存儲爲新表students_of_class1:新創建的表結構和SELECT使用的表結構完全一致。

(5)寫入查詢結果集:可以結合INSERT和SELECT,將SELECT語句的結果集直接插入到指定表中,確保INSERT語句的列和SELECT語句的列能一一對應。

INSERT INTO statistics (class_id, average) SELECT class_id, AVG(score) FROM students GROUP BY class_id;

(6)按天統計消息發送量:

Select  DATE(a.send_time),count(1) as sendCount from t_msg a where a.catagoryId=#{cId} group by DATE(a.send_time) ;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章