ОБНОВЛЕНИЕ SQL: Вы не можете указать целевую таблицу 'nilai_mhs' для обновления в предложении FROM " - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть запрос как:

UPDATE nilai_mhs 
SET status_nilai = 3
where 
id_kode_mk = 
(SELECT e.id_kode_mk
FROM nilai_mhs c, tbl_mhs d,master_mk e,tbl_mk_pertahun f
WHERE 
c.nim = d.nim
AND 
c.id_kode_mk = e.id_kode_mk
AND
e.id_kode_mk = f.id_kode_mk
AND 
c.nim = '20081001010125'
AND 
c.status_nilai =2
AND
sem_ganjil_genap = 'ganjil')

но результат отображает ошибку:

Вы не можете указать целевую таблицу 'nilai_mhs' для обновления в предложении FROM

Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 16 февраля 2011

Просто обновите таблицу напрямую без подзапроса

UPDATE nilai_mhs c
  JOIN tbl_mhs d USING(nim)
  JOIN master_mk e USING(id_kode_mk)
  JOIN tbl_mk_pertahun f USING(id_kode_mk)
SET c.status_nilai = 3
WHERE c.nim = '20081001010125'
  AND c.status_nilai = 2
  AND sem_ganjil_genap = 'ganjil'

Если вам нужно выполнить подзапрос (например, вы собираете результаты), вам нужно вместо этого присоединиться к подзапросу:

UPDATE nilai_mhs t JOIN (
    SELECT e.id_kode_mk
    FROM nilai_mhs c, tbl_mhs d,master_mk e,tbl_mk_pertahun f
    WHERE c.nim = d.nim AND c.id_kode_mk = e.id_kode_mk AND e.id_kode_mk = f.id_kode_mk AND c.nim = '20081001010125' AND c.status_nilai =2 AND sem_ganjil_genap = 'ganjil'
) q ON t.id_kode_mk = q.id_kode_mk
SET t.status_nilai = 3
...