2012-07-12 153 views
2

我有兩個表格:employeeemployee_group。插入到第一個表後,我將從此表中獲取最後插入的ID。接下來我需要插入表employee_group。 SQL:Mysql沒有插入記錄

INSERT INTO employee_group (employee_id, group_id) 
    SELECT {$currentEmpId}, group_id 
    FROM employee_group 
    WHERE employee_id = {$anyId} 

MySQL已返回TRUE。但是記錄沒有插入。

我注意到如果嘗試插入先前插入的員工的記錄,則查詢將會成功。例如:

  1. 插入到員工,將返回$currentEmpId作爲最後插入的ID
  2. INSERT INTO employee_group (employee_id, group_id) SELECT {$currentEmpId - 1}, group_id FROM employee_group WHERE employee_id = {$anyEmpId}

或者,如果我試圖對現有員工和以前插入記錄在同一時間,然後第一個查詢將會失敗但第二個查詢正常。

該數據庫沒有觸發器,外鍵或函數。沒有什麼,只是數據。

我處於僵局。

UPD:如果我將記錄記錄到php變量,然後將其插入並插入每個記錄作爲一個項目,如INSERT INTO employee_group (employee_id, group_id) VALUES (xxx, yyy)我也會得到這個問題。

+0

什麼日誌報告? – Peon 2012-07-12 10:19:13

+0

'{$ currentEmpId - 1}'會導致PHP語法錯誤,而definitley會導致sql語法錯誤。 – 2012-07-12 10:24:13

+0

對於那段代碼我很抱歉,確實有'sprintf(「.. SELECT%u ..」,$ currentEmpId - 1)',但我已經替換它以更好地理解。 – diNord 2012-07-12 10:29:07

回答

-2

試試這個

INSERT INTO employee_group (employee_id, group_id) 
    VALUES({$toEmpId},{SELECT {$toEmpId}, group_id FROM employee_group WHERE employee_id = {$fromEmpId}}) 
+0

您試圖在這裏將3個值插入2列。 – lafor 2012-07-12 10:21:41

+0

這是soooooooooo不會工作.... 3個值到2個字段,我不知道你期望一個選擇在那裏工作,再加上那些額外的{}是一個語法錯誤,等等...等...等...... – 2012-07-12 10:21:49

2
INSERT INTO employee_group (employee_id, group_id) 
    VALUES({$toEmpId},{SELECT group_id FROM employee_group WHERE employee_id = {$fromEmpId}}) 

檢查出來..

+0

我不確定mysql允許通過這種方式插入來自其他表的多個記錄。我已經試過你的SQL,但有一個語法錯誤。 – diNord 2012-07-12 10:45:00