2011-12-01 40 views
16

I Have a bàn các chi tiết xe đạp và tôi muốn thêm mức giá khác nhau với các loại xe đạp khác nhau sử dụng các truy vấn SQL, nhưng những gì tôi có mang lại cho tôi một lỗi cú pháp:giá trị chèn vào hàng cụ thể với SQL

INSERT INTO bike (full_day) 
VALUES (10) 
WHERE bike_type = 'mens_hybrid'; 

gì sai với mã này?

Trả lời

39

An INSERT statement chỉ để tạo bản ghi hoàn toàn mới, không phải để điền dữ liệu vào các bản ghi hiện có. Những gì bạn cần là một UPDATE statement, cập nhật một bản ghi hiện có:

UPDATE bike SET full_day = 10 WHERE bike_type = 'mens_hybrid'; 

(Lưu ý: dưới đây là một phiên bản trước của câu trả lời này, từ trước khi nó là rõ ràng với tôi những gì các poster ban đầu đã cố gắng để làm Tôi để nó ở đây vì nhiều người đã trả lời câu hỏi này dường như không nhận thấy vấn đề bằng cách viết INSERT ... VALUES (...) WHERE, điều này khiến tôi nghĩ rằng giải thích này có thể hữu ích đối với một số người gặp vấn đề này.)


Biểu đồ đó ent không có ý nghĩa. An INSERT không thể mất một mệnh đề WHERE, bởi vì WHERE đề cập đến các bản ghi hiện có và một INSERT tạo các bản ghi mới.

(Để chặn nhầm lẫn tiềm năng: có tồn tại một điều như INSERT INTO ... SELECT ..., nơi các hồ sơ để chèn được xác định bởi một truy vấn SELECT chứ không phải bởi một biểu thức VALUES, và trong trường hợp đó truy vấn SELECT có thể, tất nhiên, có một Điều khoản WHERE. Nhưng không có trường hợp nào mệnh đề WHERE thuộc về tuyên bố INSERT trực tiếp.)

+0

Làm cách nào để thêm giá trị 10 vào cột đó ở nơi mẫu xe đạp là xe đạp leo núi nam – Matt

+0

@Matt: Tôi không biết nếu bạn thấy, nhưng tôi đã chỉnh sửa câu trả lời của mình; tất cả mọi thứ từ từ ** Cập nhật ** trở đi là mới, và tôi nghĩ * đó là những gì bạn đang tìm kiếm. Nếu không, thì bạn có thể phải đăng một số dữ liệu mẫu, hiển thị bảng của bạn sẽ trông như thế nào trước và sau khi bạn chạy câu lệnh. – ruakh

+0

@Matt: Ngoài ra, DBMS nào bạn đang sử dụng? (MySQL? PostgreSQL? Oracle? SQL Server?) Tôi có thể thêm liên kết đến tài liệu liên quan, có thể bạn sẽ thấy hữu ích, nhưng các quy tắc chi tiết phụ thuộc một chút vào DBMS, vì vậy tôi không muốn đăng (nói) Tài liệu Oracle nếu bạn đang sử dụng (nói) MySQL. – ruakh

Các vấn đề liên quan