0

我有带有 sort_id( id )(A_I)、page_id和排序号 ( sort ) 的表步骤,我需要添加具有相同 page_id 的新行以及组 id 和 page_id 的最大排序

mysql_query("INSERT INTO `steps` (`sort`, `page_id`)
VALUES
    (
        MAX(`sort`) + 1,
        (
            SELECT
                page_id
            FROM
                steps
            WHERE
                `id` = '1'
        )
    )");

我收到错误

[Err] 1111 - Invalid use of group function

我需要这样

INSERT INTO `steps` (`sort`, `page_id`)
VALUES
    (
        SELECT
            Max(s1.sort) + 1 AS sort,
            s2.page_id AS page_id
        FROM
            steps AS s1,
            steps AS s2
        WHERE
            s2.id = '1'
    )

但是 [Err] 1064 - 您的 SQL 语法有错误;

4

2 回答 2

0

您似乎缺少select子查询的一部分:

insert into `steps`(`sort`, `page_id`)
values
(
    SELECT
        max(`sort`) +1,
        page_id
    FROM
        steps
    WHERE
        `id` = '1'
    group by
        page_id
)

为时已晚,但这应该可以工作,或者让您走上正确的道路以使其正常工作。

最后,您应该真正远离mysql_query功能。看看PDO。它更安全,可移植到其他数据库,如果您现在只是学习这些东西,那么您不妨学习当前的技术。

编辑:

根据对另一个答案的评论,这将更接近您正在寻找的内容:

insert into `steps`(`sort`, `page_id`)
values
(
    SELECT
        (select max(`sort`) from steps) +1,
        page_id
    FROM
        steps
    WHERE
        `id` = '1'
    group by
        page_id
)
于 2013-08-30T14:17:32.390 回答
0
mysql_query("INSERT INTO `steps` (`sort`, `page_id`)(SELECT MAX(`sort`) + 1,page_id FROM steps WHERE `id` = '1')");
于 2013-08-30T14:19:02.460 回答