2013-02-22 80 views
2

我有這個疑問:mysql的刪除與加盟和限制

DELETE `LINK_LA_TYP` 
FROM `LINK_LA_TYP` 
JOIN `LINK_ART` ON `LINK_LA_TYP`.LAT_LA_ID = `LINK_ART`.LA_ID 
JOIN `ARTICLES` ON `LINK_ART`.LA_ART_ID = `ARTICLES`.ART_ID 
WHERE (`ARTICLES`.ART_SUP_ID in (10008,10439,11005,10097,10669,11100,80,10912,10683,10675,10194,11196,1166,10730,10248,10870,11200,11059,247,10121,10911,489,10724,496,10093,10205,1318,10953,11199,11047,128,114,194,10865,11058,10345,1286,10667,10064,11077,10622,11205,10917,10344,495,10709,10954,10744,304,10957,10447,10764,10129,10862,10918,10731,11115,10095,10859,10580,1345,10177,10323,144,11182,10132,256,10941,58,10006,10017,10780,10765,10665,11110,10714,10224,750,10267,10179,10725,10774,11063,10868,10103,10676,10057,10649,255,10322,11022,309,10754,11121,10801,10018,11004,10245,146,11056,381,10781,10699,11120,11126,830,10240,11162,10436,10584,10342,10861,11190,10721,11171,10564,10545,94,10087,73,10755,10869,10547,10706,10346,444,426,10059,153,122,10674,64,113,11101,10231,10337,806,11117,10385,251,11188,491,11192,100,10792,10069,10864,11099,10246,10178,10758,10568,10230,10124,10384,10782,10726,384,10670,305,10763,10768,10585,10394,10552,498,10677,1348,168,10814,10582,10382,11093,11173,10381,427,441)) limit 50000; 

但爲什麼我得到一個錯誤?

1064 - 您的SQL語法錯誤;請檢查與您的MySQL服務器版本對應的手冊,以便在第1行的「限制50」附近使用正確的語法。

有什麼不對?以及如何限制刪除查詢條目以刪除?

回答

2

manual

對於多表語法,DELETE從每個刪除tbl_name滿足條件的行。在這種情況下,不能使用ORDER BY和LIMIT。

你最好是SELECT想要刪除的ID與限制,然後刪除這些。

+0

我需要在我的代碼中更改哪些內容?您可以舉例嗎? – 2013-02-25 17:31:33

0

如果您嘗試使用聯接進行刪除,則需要檢查DELETE的語法,最好在更新時使用CASCADE創建表。

+0

我需要在我的代碼中更改什麼?你能舉個例子嗎? – 2013-02-25 17:32:07

+0

你爲什麼不理我? ( – 2013-02-26 16:28:58

+0

)您需要更改您的表,因此當您刪除父記錄時,它也會刪除孩子的字段。請閱讀[外鍵](http://www.mobilefish.com/developer/mysql/mysql_quickguide_foreign_keys.html)或正確的[參考](http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html)簡而言之,每個表都有一個來自另一個表的ID,當你刪除該表中的記錄,設置級聯參數,並將刪除第二個表中的記錄。 – 2013-02-26 22:45:55