【问题标题】:mysql insert query with mix of static value and inner select querymysql插入查询与静态值和内部选择查询的混合
【发布时间】:2016-09-02 05:07:52
【问题描述】:

我有一个名为 productcategory 的表,我想在 category_nameparent_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 查询不工作
提前致谢

【问题讨论】:

  • 实际的错误信息是否分类?我想不出任何其他理由不与我们分享它。我的猜测是您无法从您尝试修改的子查询中的表中进行选择。

标签: mysql


【解决方案1】:

它应该像这样工作:

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

【讨论】:

  • 很高兴它有效,所以请接受答案,以便其他人可以看到这个问题已解决:)
【解决方案2】:

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

据我所知,这可以通过使用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);

这可能会对你有所帮助。

【讨论】:

    【解决方案3】:

    现在试试这个:

    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;
    

    【讨论】:

    • 您是否认真建议复制整个表以使查询正常工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2015-09-27
    • 2016-08-26
    • 2014-09-01
    • 2018-10-07
    相关资源
    最近更新 更多