2012-06-13 2 views
0

Мне нужно знать, где я ошибался в этой инструкции sql. Я пытаюсь найти решение в предыдущих потоках с аналогичной проблемой, но никто не может решить мою проблему. поэтому я думаю, что мое заявление на самом деле ошибочно.Вы не можете указать таблицу целей 'b' для обновления в предложении FROM

UPDATE table1 b 

LEFT JOIN table2 m ON b.ICNO=m.ICNO 

SET b.SalMoveMth = '01' 

WHERE 
    m.Status!='6' AND 
    (DATE_FORMAT(startDateSand,'%m')='10' OR DATE_FORMAT(startDateSand,'%m')='11' OR 
     DATE_FORMAT(startDateSand,'%m')='12') AND 
    ((SELECT SalMoveMth FROM table1 WHERE ICNO=table2.ICNO ORDER BY SalMoveMthStDt DESC LIMIT 1)!='10'). 

Thank you.

+0

, что на самом деле это ваша проблема? Какое сообщение об ошибке? – glglgl

ответ

0

последняя часть, где положение:

вместо:

where ICNO=table2.ICNO order by SalMoveMthStDt desc limit 1)!='10') 

попробовать:

where ICNO=table2.ICNO order by SalMoveMthStDt desc limit 1)<>'10') 

также:

and b.SalMoveMth in (
((select SalMoveMth from table1 where ICNO=table2.ICNO order by 
SalMoveMthStDt desc limit 1)<>'10')) 
+0

по-прежнему получают ту же ошибку. это из-за вложенного запроса? любое решение для этого? – elo

+0

@JasonR! = Vs. <> не должно действительно иметь значения ... – glglgl

+0

может у вас скриптировать ваши 2 таблицы и некоторые данные, которые у вас есть, и отправить мне PLZ? –

0
update table1 
set SalMoveMth = '01' where icno in 
    (select b.ICNO from table1 b 
    left join table2 m on b.ICNO=m.ICNO 
    where m.Status!='6' 
    and (DATE_FORMAT(startDateSand,'%m')='10' or 
     DATE_FORMAT(startDateSand,'%m')='11' or 
     DATE_FORMAT(startDateSand,'%m')='12') 
    and b.SalMoveMth in (
    ((select SalMoveMth 
     from table1 
     where ICNO=table2.ICNO 
     order by SalMoveMthStDt desc limit 1)<>'10') 
) 
Смежные вопросы

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