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"
DELETE FROM hotel_list h, tariff_chart t WHERE h.hotel_id = t.hotel_id AND t.hotel_id = "t16"
您可以在 mysql 参考站点上检查多表删除的确切语法 - http://dev.mysql.com/doc/refman/5.0/en/delete.html
DELETE hotel_list
FROM hotel_list h
INNER JOIN tariff_chart t ON h.hotel_id = t.hotel_id
WHERE t.hotel_id = "t16"
在 phpMyAdmin
中创建表时。 您应该与这两个表以及Foreign Key
的设置On Delete Cascade
创建关系。
在tariff_chart
为hotel_id
字段制作On Delete Cascade
的关系视图中
因此,当您删除父表中的记录时,它将自动删除子表中的所有子记录
所以在运行查询时
DELETE FROM hotel_list WHERE HOTEL_ID = "T16";
将从表中删除tariff_chart
子记录
也就是说我想从表中删除所有数据hotel_list并且 tariff_chart表,其中 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";