MySQL嵌套选择和IFNULL语法错误

时间:2014-05-13 19:53:30

标签: mysql sql

需要MySQL查询的帮助,似乎无法弄清楚如何正确编写这个语句。我试图在一个插入语句中嵌入一个select,并且还使用了ifnull。

INSERT INTO vo (vo_id, agreement_id, serial_no, vo_date, vo_status) 
VALUES (NULL, '3',  (SELECT IFNULL(max(serial_no),1) FROM vo WHERE agreement_id = '3'), CURDATE(), 'Open')

任何帮助表示赞赏! 谢谢!

编辑:我在mysql中遇到的错误是:#1093 - 您无法在FROM子句中指定目标表'vo'进行更新

2 个答案:

答案 0 :(得分:1)

您可以通过将子查询包装在没有WHERE子句的另一个子查询中来消除此错误:

INSERT INTO vo 
(vo_id, agreement_id, serial_no, vo_date, vo_status) 
VALUES 
(NULL, '3',  (SELECT x.* 
             FROM (SELECT IFNULL(max(serial_no),1) 
                   FROM vo 
                   WHERE agreement_id = '3'
                  ) x), CURDATE(), 'Open')

答案 1 :(得分:1)

试试这个

   INSERT INTO vo (vo_id, agreement_id, serial_no, vo_date, vo_status) 
   VALUES (NULL, '3', (SELECT * from  (SELECT IFNULL(max(serial_no),1) FROM vo WHERE agreement_id = '3')t), CURDATE(), 'Open')