2013-08-30 76 views
0

我有表的步驟與它的sort_id(ID)(A_I),PAGE_ID和排序號(排序),我需要添加新行具有相同的PAGE_ID和最大排序組ID和PAGE_IDPHP MySQL的無效使用組功能的

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' 
    ) 

但[錯誤] 1064 - 你在你的SQL語法錯誤;

+0

_「和最大排序組ID和PAGE_ID的」 _ - 那麼,選擇那個值,而不是僅僅把一個聚合函數名稱放入一個不屬於它的查詢中。 – CBroe

回答

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 
) 
+0

[錯誤] 1064 - 您的SQL語法錯誤; – user2368299

+0

我需要狀插入到'steps'('sort','page_id') 值 ( SELECT 最大值('sort')+1, PAGE_ID FROM 步驟 WHERE 'id' = '1' 組由 PAGE_ID ) – user2368299

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

我需要最大的排序.. ID可以是任意不僅1,但它們具有相同的PAGE_ID – user2368299

+0

不是一個問題,試試吧。它將按照您的要求工作。 –

+0

我需要這樣INSERT INTO'steps'('sort','page_id')VALUES( SELECT MAX(s1.sort)+1作爲排序, s2.page_id如PAGE_ID FROM 步驟爲S1, 步驟AS s2 WHERE s2.id ='1' ) – user2368299