我想使用C#和mysql从不同的表中删除多行。我有3张桌子 用户,项目和edata。在users表中,我有以下列:ID(主键),用户名,密码,权限。在edata我有:ID(主键),姓名,姓氏,年龄,城市,以及项目表:ID(主键),名称,成本,seller_id,出价。我设法编写的查询是:
delete database.users, database.edata,database.items
from database.users
left join database.edata ON database.users.id = database.edata.id
left join database.items on database.users.id = database.items.seller_id
where database.users.username = 'mark'
查询删除用户表中用户的id与edata表中用户的id和items表中的seller_id相同且user表中的用户名等于给定值的所有行,在这种情况下'标记'。 查询在mysql工作台中运行得很好,但出于某种原因,当我想在我的C#代码中使用它时,我得到了这个例外:多删除中的未知表。 我在这个问题上红了很多,我发现如果使用别名,有一些多删除错误,但在我的情况下,我没有使用任何别名。我甚至使用表和表列的全名。 现在我不得不使用几个不同的查询来删除行,老实说我不喜欢它,当只能使用一个查询时。那么有谁可以帮助我吗?任何反馈将不胜感激。
答案 0 :(得分:0)
您应该在顶部DELETE部分使用表别名,而不是表的全名。
你能试试吗?
DELETE u
FROM database.users AS u
LEFT JOIN database.edata AS d
ON d.id = u.id
LEFT JOIN database.items AS i
ON i.seller_id = u.id
WHERE u.username = 'mark'
刚刚在工作中写了这个,所以我无法测试它。您可能需要提及DELETE和FROM之间的其他别名。