2016-04-14 36 views
0

Grafik_id 1 olduğu her iki tablodaki tüm satırları silmek istiyorum, ancak işe yaramıyor ve neden hiçbir ipucu yok. beklenmeyen karakter: Mysql içinde INNER JOIN kullanarak iki tablodaki satırlar nasıl silinir?

DELETE `cms_module_charts` 
FROM `cms_module_charts` 
INNER JOIN `cms_module_charts_kategorie` 
ON `cms_module_charts_kategorie`.`chart_id`=`cms_module_charts`.`chart_id` 
WHERE `chart_id`= 1 

Bu

hatadır. (Yakın 7 pozisyonunda " cms_module_charts") hiçbir şey butspace olmadan standart bir SQL sözdizimi DELETE FROM olduğunu

cevap

0

görünüyor:

DELETE t1, t2 
    FROM t1 INNER JOIN t2 INNER JOIN t3 
    WHERE t1.id=t2.id AND t2.id=t3.id; 

VEYA

DELETE 
    FROM t1, t2 
USING t1 INNER JOIN t2 INNER JOIN t3 
WHERE t1.id=t2.id AND t2.id=t3.id; 

Ben de daha yeni, tercih, JOIN standart kabul edilebilir gibi görünüyor ve hiçbir fikrim yok Sorgunuz neden şikayet ediyor? Sorgunuzda tuhaf karakterler olmadığından emin misiniz?

0

,

DELETE ila FROM bu deneyin:

DELETE FROM (`cms_module_charts` INNER JOIN `cms_module_charts_kategorie` 
ON `cms_module_charts_kategorie`.`chart_id`=`cms_module_charts`.`chart_id`) 
WHERE `chart_id`= 1 
+0

Yanlış, isteğe bağlı bir çoklu tablo sözdizimi var .. belgelere bakın. – Arth

+0

@ SQL standartta, bu sözdizimini kullanmalısınız !! Belki de mySQL isteğe bağlı bir sözdizimi sağlar, ancak bu durumda kullanımdan kaldırılır ... – Vincent

+0

Hmm, eminim ki kullanımdan kaldırılmamış .. ve soru mysql için olduğunu belirtir. Sadece sözdizimi * blah * herhangi bir açıklama olmadan yanıltıcı olduğunu belirterek. – Arth

0

i veritabanı şeması kullanmanız gereken düşünmek ON DELETE CASCADE, daha sonra bir satırı sildiğinizde, referanslarını siler, ancak birleştirmeyi kullanarak sildiğinizde bir anlam ifade etmez. kolayca yapabilirsiniz gibi MySQL Docs itibaren