mysql插入混合静态值和内部选择查询的查询

时间:2016-09-02 05:07:52

标签: mysql

我有一个名为 productcategory 的表我想在列 category_name parent_id 中插入两个静态值,并且需要插入列 sort_order ,内部选择查询生成的值

INSERT INTO productcategory(category_name,parent_id,sort_order) 
values('Flowers',0,(select MAX(sort_order)+1 from productcategory where parent_id=0))

SQL查询无法正常工作
在此先感谢

3 个答案:

答案 0 :(得分:1)

您无法从尝试更新或插入的子查询中的表格中进行选择。

据我所知,这可以通过使用下面的SET方法来实现。

SELECT @maxSortOrder := IFNULL(MAX(sort_order),0)+1 FROM productcategory WHERE parent_id=0;
INSERT INTO productcategory(category_name,parent_id,sort_order) VALUES('Flowers',0,@maxSortOrder);

这可能会对你有帮助。

答案 1 :(得分:1)

它应该像这样工作:

INSERT INTO productcategory(category_name,parent_id,sort_order)
SELECT 'Flowers', 0, MAX(sort_order)+1
FROM   productcategory
WHERE  parent_id = 0

答案 2 :(得分:0)

现在试试这个:

CREATE TABLE dupproduct AS (SELECT * FROM productcategory);

INSERT INTO productcategory (
  category_name,
  parent_id,
  sort_order
) 
VALUES
  (
    'Flowers',
    0,
    (SELECT 
      MAX(sort_order) + 1 
    FROM
      dupproduct 
    WHERE parent_id = 0)
  );


  DROP TABLE dupproduct;