2013-04-04 41 views
35

Tôi cố gắng để Chèn dữ liệu từ một table1 vào table2MySQL lỗi 1241: toán hạng nên chứa 1 cột (s)

insert into table2(Name,Subject,student_id,result) 
select (Name,Subject,student_id,result) 
from table1; 

chính cho table2 là student_id.

Giả sử rằng không có bất kỳ trùng lặp nào.

Tôi gặp lỗi: MySQL error 1241: Operand should contain 1 column(s)

Chỉ có bốn cột trong bảng2.

Trả lời

86

Cú pháp lỗi, loại bỏ các () từ select.

insert into table2 (name, subject, student_id, result) 
select name, subject, student_id, result 
from table1; 
+2

Điều này đã giải quyết được sự cố của tôi. Nhưng tôi không hiểu tại sao? – Chud37

16

Chỉ cần loại bỏ các () vào câu lệnh SELECT của bạn:

insert into table2 (Name, Subject, student_id, result) 
select Name, Subject, student_id, result 
from table1; 
0

Một cách khác để làm cho trình phân tích cú pháp tăng cùng ngoại lệ là mệnh đề không chính xác sau.

CHỌN r.name TỪ vai trò r WHERE id TRÊN (SELECT ROLE_ID, system_user_id TỪ role_members m ĐÂU r.id = m.role_id VÀ m.system_user_id = intIdSystemUser )

Các lồng nhau Câu lệnh SELECT trong mệnh đề IN trả về hai cột, mà trình phân tích xem là toán hạng, đúng về mặt kỹ thuật, vì cột id khớp với các giá trị từ một cột (role_id) trong kết quả được trả về bởi câu lệnh chọn lồng nhau. một danh sách.

Vì mục đích hoàn chỉnh, cú pháp chính xác như sau.

CHỌN r.name TỪ vai trò r WHERE id TRÊN (SELECT ROLE_ID TỪ role_members m ĐÂU r.id = m.role_id VÀ m.system_user_id = intIdSystemUser )

Các thủ tục lưu trữ trong đó truy vấn này là một phần không chỉ được phân tích cú pháp, mà còn trả lại kết quả mong đợi.

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