我在MySQL中有三个表, table1
, table2
和 table3
. table2具有table1的外键,而table3具有table2的外键但不具有table1的外键 . 结构是这样的:
表格1
Name | type
------------------------
d_id | int
d_name | varchar(100)
表2
Name | type
---------------------------------------
s_id | int
d_id | int (foreign_key table1 d_id)
s_name | varchar(100)
表3
Name | type
----------------------------------------
m_id | int
s_id | int (foreign_key table2 s_id)
m_value | int
我可以轻松选择和加入这三个表的信息,但基于类似的连接删除我只是不知道该怎么做 . 这就是我选择数据的方式 .
SELECT * FROM table3
JOIN table2 ON table3.s_id = table2.s_id
JOIN table1 ON table2.d_id = table1.d_id
现在,我想删除table3上的一些值,其中table3 = table2 = table1我该怎么做?
4 回答
考虑到您要从
Table3
中删除任何外键未引用的数据,我使用虚拟数据来演示此查询 . 注意,在从外键引用的Table1
和Table2
中删除数据时应该只有问题 . 如果Primary and Foreign key
强制Referential Integrity
约束,则不能从主表中删除数据而不从子表中删除其引用 .如果您乐意编写一个select语句来选择应删除的ID列表,则可以删除这些行:
假设您要删除
table3
中与table1
中的d_name=fdiengdoh
对应的所有数据,您可以使用以下查询 .如果您需要删除所有相应的数据,只需从上面的查询中删除最后一行 .
希望这会有所帮助 .