2016-07-23 36 views
-1

是否有可能这样做?插入选择不工作不知道为什么

insert into cart(cartid,rowid,productname) select max(cartid)+1 from cart, 2, "hello" 

我想插入我自己的rowid和产品名称

+1

你是否错过了选择,即“SELECT MAX(cartid)+1,2,'hello'FROM cart' – Unoembre

回答

1

的值。这是你如何短语查询:

insert into cart (cartid, rowid, productname) 
    select max(cartid) + 1, 2, 'hello' 
    from cart; 

然而,这是错误的方式有自动递增cartid。相反,将列定义为自动递增,并简单地执行:

insert into cart (rowid, productname) 
    select 2, 'hello' 
    from cart; 

数据库自动处理分配。

+0

感谢它的工作!顺便问一下,你知道这是否有效?我收到一个错误,说你不能申报2个表格。更新购物车设置productname ='hey'其中cartid =(从购物车中选择max(cartid)) – Marcus

+0

MySQL不允许您在查询中的大多数其他位置参考正在更新的表。 –

1

的语法不正确:

insert into cart(cartid,rowid,productname) 
select max(cartid)+1, 2, "hello" from cart 

的另一个问题是,如果车表是空的,那么最大(cartid)将是无效和无法初始化表,所以你必须使用聚结:

insert into cart(cartid,rowid,productname) 
select coalesce(max(cartid)+1, 1), 2, "hello" from cart 

但为什么你想要做那样的事情?你不能使用auto_increment列吗?

+0

谢谢!嗯,它的复杂..我很乐意使用auto_increment,如果我可以太哈哈 – Marcus

相关问题