2013-12-07 102 views
0
SELECT * 
FROM hotel_list h 
INNER JOIN tariff_chart t ON h.hotel_id = t.hotel_id 
WHERE t.hotel_id = "t16" 

我想在我的sql中刪除這個結果行,代碼是什麼?從連接表中刪除一個特定的行

這就是我想從hotel_list表和tariff_chart表,其中hotel_id="t16"

回答

0

這就是我想刪除hotel_list表和 tariff_chart表,其中HOTEL_ID =「T16的所有數據刪除所有數據「

首先,我看不到爲什麼要在這裏使用join

您應適用於在hotel_listhotel_id主關鍵字的ON DELETE CASCADE選項,以刪除所有「子」行(外商鍵),就像一個在tariff_chart表。

如果指定此選項,則當您刪除父表中的一行時,數據庫服務器還會刪除與該子表中的該行(外鍵)關聯的所有行。 ON DELETE CASCADE選項的優點是它允許您減少執行刪除操作所需的SQL語句的數量。

然後就去做這樣的:

DELETE FROM hotel_list WHERE HOTEL_ID = "T16"; 
0

在創建您的表phpMyAdmin。您應該創建與這兩個表的關係,並在On Delete Cascade中爲Foreign Key創建關係。

tariff_chart關係視圖使On Delete Cascadehotel_id

所以,當你永遠會在父表中刪除一條記錄將自動刪除子表中的所有子記錄

所以當運行查詢

DELETE FROM hotel_list WHERE HOTEL_ID = "T16"; 

將從tariff_chart刪除所有子記錄表

0
DELETE hotel_list 
FROM hotel_list h 
INNER JOIN tariff_chart t ON h.hotel_id = t.hotel_id 
WHERE t.hotel_id = "t16"