2016-08-16 46 views
0

我幾次谷歌這個問題,但未能解決上述問題。請幫幫我。錯誤代碼:1093.您無法在FROM子句中指定目標表'mm'進行更新

我的查詢:

UPDATE meter As mm SET mm.mdi_reset_date='2', mm.write_mdi_reset_date='1' 
      WHERE mm.msn IN (SELECT m.msn 
      FROM meter m 
       INNER JOIN connection con ON con.feeder_id = m.feeder_id 
       INNER JOIN consumers co ON co.consumer_id = con.customer_id 
       INNER JOIN customer cs ON co.parent_id = cs.customer_id 
       INNER JOIN cs_group_details cd ON cd.customer_id=cs.customer_id 
       WHERE co.batch_no = '30' 
      AND cd.cs_group_id='4'); 
+0

創建臨時表和使用 – Saurabh

+0

請分享任何其他解決方案來處理這個問題... –

回答

0

首先使用查詢

CREATE TABLE meter_temp LIKE meter; 

現在從meter插入數據到臨時表創建臨時表meter_temp

INSERT INTO meter_temp SELECT * FROM meter; 

使用您的更新查詢

UPDATE meter As mm SET mm.mdi_reset_date='2', mm.write_mdi_reset_date='1' 
      WHERE mm.msn IN (SELECT m.msn 
      FROM meter_temp m 
       INNER JOIN connection con ON con.feeder_id = m.feeder_id 
       INNER JOIN consumers co ON co.consumer_id = con.customer_id 
       INNER JOIN customer cs ON co.parent_id = cs.customer_id 
       INNER JOIN cs_group_details cd ON cd.customer_id=cs.customer_id 
       WHERE co.batch_no = '30' 
      AND cd.cs_group_id='4'); 

讓我知道它是否工作與否。

編輯::

$subQuery = "SELECT m.msn FROM meter_temp m INNER JOIN connection con ON con.feeder_id = m.feeder_id INNER JOIN consumers co ON co.consumer_id = con.customer_id INNER JOIN customer cs ON co.parent_id = cs.customer_id INNER JOIN cs_group_details cd ON cd.customer_id=cs.customer_id WHERE co.batch_no = '30' AND cd.cs_group_id='4'"; 
$result = mysqli($con,$query); // assuming you are using mysqli. change as per your code 
while($row = mysqli_fetch_assoc($result)) 
{ 
    $msnArray[] = $row['msn']; 
} 
$msn = implode(",",$msnArray); // assuming msn is integer and not string. 
// if it is string then you have to wrap it in quotes. 
// Now run update query 
$update = "UPDATE meter SET mdi_reset_date='2', write_mdi_reset_date='1' WHERE msn IN ({$msn})"; 
$updateResult = mysqli_query($con,$update); 
+0

你的努力表示高度讚賞,但我不希望創建溫度。表。因爲電錶的數據是GB。 –

+0

然後我認爲你應該先運行子查詢,然後使用檢索到的'msn'運行更新查詢。前提是您可以運行兩個問號 – Saurabh

+0

請詳細提及是否有其他解決方案... –

相關問題