作者TeemingVoid (TeemingVoid)
看板Database
標題Re: [問題] 有關insert into指令
時間Sun Jul 8 18:00:54 2012
※ 引述《iversonjimmy (Effort)》之銘言:
: 請問各位
: 我在下insert into + select 語法時,
: 出現一個error message為
: "Operand should contain 1 column(s)"
: 可以請問大家這大概是什麼意思嗎?
「該運算元只許一個欄位」。
請檢查一下您的 select 句子,看看哪裏有:
「應該只傳回一個欄位,卻傳回了不只一個欄位的資料」。
舉例來說:
use test;
create table lab1 (id int primary key, data varchar(10));
insert into lab1 values (1, 'data A'), (2, 'Data B'), (3, 'Data C');
create table lab2 (id int primary key, data varchar(10));
-- 下列四個敘述是正常的:
insert into lab2 select id, data from lab1 where id <= 2;
insert into lab2 select 4, 'data 4';
insert into lab2 select 5, (select 'data 5');
insert into lab2 select 6, (select 'data' + '123');
-- 下列兩個敘述是錯的,因為括號中的子查詢傳回多個欄位,按理應該只有一個欄位:
insert into lab2 select 7, (select 'data', '123');
insert into lab2
select id, data from lab1
where id not in (select id, data from lab2);
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.128.22
推 iversonjimmy:你的解釋很清楚,很謝謝你,我發現我的問題點了。 07/08 19:23
→ iversonjimmy:我在select那,把要傳回的欄位多用了小括弧才導致。 07/08 19:23