Sai lầm thường gặp
MySQL không cho phép mệnh đề WHERE trong câu lệnh INSERT. Cú pháp sau là SAI:
-- SAI - MySQL không hỗ trợ
INSERT INTO bang (cot) VALUES ('gia_tri') WHERE dieu_kien;
Giải pháp đúng: Dùng UPDATE
UPDATE ten_bang SET cot1 = gia_tri1, cot2 = gia_tri2, ... WHERE dieu_kien;
Ví dụ thực tế
Dữ liệu ban đầu
+-----------+-------------+-----------------+ | StudentId | StudentName | StudentPassword | +-----------+-------------+-----------------+ | 1 | John | John123456 | | 2 | Carol | 99999 | | 3 | Bob | OO7Bob | | 4 | David | David321 | +-----------+-------------+-----------------+
Cập nhật bản ghi StudentId = 4
mysql> UPDATE addWhereClauseDemo
-> SET StudentName = 'Maxwell', StudentPassword = 'Maxwell44444'
-> WHERE StudentId = 4;
Kết quả
+-----------+-------------+-----------------+ | StudentId | StudentName | StudentPassword | +-----------+-------------+-----------------+ | 1 | John | John123456 | | 2 | Carol | 99999 | | 3 | Bob | OO7Bob | | 4 | Maxwell | Maxwell44444 | +-----------+-------------+-----------------+
INSERT có điều kiện: Dùng INSERT ... SELECT
INSERT INTO bang_moi (cot1, cot2) SELECT cot1, cot2 FROM bang_cu WHERE dieu_kien;
Tóm lại: INSERT thêm mới, UPDATE sửa có điều kiện. Không gộp được WHERE vào INSERT VALUES.