2016-08-16 2 views
0

Я задал этот вопрос несколько раз, но не смог исправить указанную проблему. пожалуйста помогите.Код ошибки: 1093. Вы не можете указать таблицу целей 'mm' для обновления в предложении FROM

Мой запрос:

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

Первый Создать временную таблицу с помощью Query

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

ваших усилий высоко ценятся, но я не хочу, чтобы создать темп. Таблица. потому что таблица счетчика имеет данные в ГБ. –

+0

Тогда я думаю, что вы должны сначала запустить подзапрос, а затем использовать запрошенный запрос на обновление msn'. при условии, что вы в порядке с запуском двух quries – Saurabh

+0

, пожалуйста, укажите подробно, если какое-либо другое решение ... –

Смежные вопросы

 Смежные вопросы