2016-04-14 27 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

İlgili konular