【问题标题】:How to delete rows using inner join in mysql如何在mysql中使用内连接删除行
【发布时间】:2020-07-03 02:11:01
【问题描述】:
DELETE *
FROM ((disease
INNER JOIN dishead ON disease.heading = dishead.hid)
INNER JOIN disdes ON disease.description = disdes.did)
where disease.id = 9;

基本上我已经使用内连接插入了数据,并且数据针对同一个产品存储在多个表中 现在我正在尝试编写查询以从所有表中删除插入的行

【问题讨论】:

  • DELETE 中没有星号,只有 SELECT。
  • 当你使用内连接删除时,你必须在DELETE之后指定要删除的表。
  • DELETE 对记录而不是列进行操作。所以 DELETE 的* 没有意义。另外,我假设您想从一个或多个实际表中删除,因此必须指定这些。
  • @FunkFortyNiner 这不是正确的副本。这里没有!=,那个问题也没有JOIN,这会改变语法。
  • @Barmar 这是其中之一。如果您觉得应该重新打开它,请告诉我您可以做到。或者...找到另一个副本添加到此。

标签: mysql


【解决方案1】:

您必须指定要从中删除的表

DELETE d, dh, dd
FROM disease AS d
JOIN dishead AS dh ON d.heading = dh.hid
JOIN disdes AS dd ON d.description = dd.did
WHERE d.id = 9

另请注意,如果这些是外键,您可以使用ON DELETE CASCADE 对其进行配置。然后你只需要从父表中删除,引用它们的行会被自动删除。

【讨论】:

  • 您在这里忽略了有关星号的事实。请尽可能准确巴尔玛。你知道的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多