【问题标题】:Delete a specific row from a joined table从联接表中删除特定行
【发布时间】:2013-12-07 20:06:43
【问题描述】:
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"
【问题讨论】:
标签:
php
mysql
sql
inner-join
delete-row
【解决方案2】:
DELETE hotel_list
FROM hotel_list h
INNER JOIN tariff_chart t ON h.hotel_id = t.hotel_id
WHERE t.hotel_id = "t16"
【解决方案3】:
在phpMyAdmin 中创建表时。您应该与这两个表创建关系,并在集合On Delete Cascade 中为Foreign Key 创建关系。
在tariff_chart 的关系视图中为hotel_id 字段生成On Delete Cascade
因此,当您删除父表中的记录时,它会自动删除子表中的所有子记录
所以在运行查询时
DELETE FROM hotel_list WHERE HOTEL_ID = "T16";
将从tariff_chart 表中删除所有子记录
【解决方案4】:
那是我想从 hotel_list 表中删除所有数据,然后
关税图表表,其中hotel_id="t16"
首先,我认为没有理由在这里使用join。
您应该在hotel_list 表的hotel_id 主键上应用ON DELETE CASCADE 选项,以便删除所有“子”行(外键),就像tariff_chart 表中的行一样。
如果您指定此选项,当您删除父表中的一行时,数据库服务器也会删除子表中与该行(外键)关联的所有行。 ON DELETE CASCADE 选项的优点是它允许您减少执行删除操作所需的 SQL 语句数量。
然后就这样做:
DELETE FROM hotel_list WHERE HOTEL_ID = "T16";