2014-02-15 47 views
3

这是我的查询,我要插入这应该从另一个表中选择的值:插入并选择组合不工作

insert into payment_details_kohin(installment_no) 
values(
select count(installment_amount)+2 
from kohin_plan.payment_details_insert 
where customer_id='KBP100058' 
) 

...但它给我一个错误:

Msg 515, Level 16, State 2, Line 1 Cannot insert the value NULL into column 'customer_id', table 'kohinoor_rdfd.kohin_plan.payment_details_kohin'; column does not allow nulls. INSERT fails. The statement has been terminated.

当我尝试以下查询:

insert into payment_details_kohin(installment_no) 
values(
select count(installment_amount)+2 
from kohin_plan.payment_details_insert 
where customer_id='KBP100058' 
) 

...它给了我下面的错误

Msg 156, Level 15, State 1, Line 2 
Incorrect syntax near the keyword 'select'. 
Msg 102, Level 15, State 1, Line 3 
Incorrect syntax near ')'. 
+1

亲爱的朋友检查我的文章会为工作你 – Developerzzz

+0

只需删除'值' – Hoh

回答

2

你的问题是,你有一个非NULL的客户ID。你需要把它插入到表,以及:

insert into payment_details_kohin(customer_id, installment_no) 
    select customer_id, count(installment_amount)+2 
    from kohin_plan.payment_details_insert 
    where customer_id='KBP100058'; 

然而,当我看到这样inserts,有时什么是真正想要的是一个更新:

update payment_details_kohin 
    set installment_no = (select count(installment_amount) + 2 
          from kohin_plan.payment_details_insert 
          where payment_details_kohin.customer_id = payment_details_insert.customer_id 
         ) 
    where customer_id = 'KBP100058'; 
2

你不需要VALUES子句在这里只是做如下

INSERT INTO payment_details_kohin(installment_no) 
SELECT ISNULL(COUNT(installment_amount), 0) + 2 
FROM kohin_plan.payment_details_insert 
WHERE customer_id = 'KBP100058' 
1

亲爱的朋友,当你在一个表从另一个表中插入值或然后inseting使用select你不要有spacity了“值”关键词

那么简单做以下

INSERT INTO payment_details_kohin(installment_no) 
SELECT count(installment_amount) + 2 
FROM kohin_plan.payment_details_insert 
WHERE customer_id = 'KBP100058'