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 :(得分:0)
那就是我要删除hotel_list表中的所有数据 tariff_chart表,其中hotel_id =“t16”
首先,我认为没有理由在这里使用join
。
您应该在hotel_id
表的hotel_list
主键上应用ON DELETE CASCADE
选项,以便删除所有“子”行(外键),如tariff_chart
表。
如果指定此选项,则在删除父表中的行时,数据库服务器还会删除子表中与该行关联的所有行(外键)。 ON DELETE CASCADE选项的优点是它允许您减少执行删除操作所需的SQL语句数量。
然后就这样做:
DELETE FROM hotel_list WHERE HOTEL_ID = "T16";
答案 1 :(得分:0)
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
答案 2 :(得分:0)
在phpMyAdmin
中创建表格时。您应该为这两个表创建关系,并在On Delete Cascade
的集Foreign Key
中创建关系。
tariff_chart
On Delete Cascade
字段的hotel_id
制作DELETE FROM hotel_list WHERE HOTEL_ID = "T16";
的关系视图
因此,当您删除Parent表中的记录时,它将自动删除子表中的所有子记录
所以在运行查询时
tariff_chart
将删除{{1}}表
中的所有子记录答案 3 :(得分: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"