如何将MySQL选择查询转换为删除查询?

如何将MySQL选择查询转换为删除查询?,mysql,sql,select,sql-delete,Mysql,Sql,Select,Sql Delete,我想从数据库中删除某些项目。我有以下疑问: SELECT * FROM sheets, entries WHERE entries.sheetID = sheets.id AND sheets.clientID = 13 这将起作用,并返回2个结果 现在我想把这个SELECT查询变成DELETE查询。但是,以下操作不起作用: DELETE FROM sheets, entries WHERE entries.sheetID = sheets.id AND sheets.clientID

我想从数据库中删除某些项目。我有以下疑问:

SELECT * 
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13
这将起作用,并返回2个结果

现在我想把这个
SELECT
查询变成
DELETE
查询。但是,以下操作不起作用:

DELETE FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13
MySQL抛出以下错误:

1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器 要使用的正确语法的版本 “WHERE entries.sheetID”附近= sheets.id和sheets.clientID=13'at 第1行


我做错了什么?你能试试这样的吗

DELETE FROM sheets
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13
如果要从图纸和中删除

DELETE FROM entries
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

如果是从条目中删除,我相信您一次只能从一个表中删除

DELETE FROM entries
WHERE entries.sheetID IN
(SELECT ID FROM sheets WHERE clientID = 13)

DELETE FROM sheets
WHERE sheets.clientID = 13
试一试

我用谷歌搜索了两个表中的SQL delete,发现了MySQL 4及以上的支持,使用以下语法:

DELETE sheets, entries
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13

如果您使用的是低于版本4的MySQL,那么您需要一次从一个表中删除行,并且您可以使用此处发布的其他解决方案之一。

您一次只能从一个表中删除行。如果要驱动同一查询中的两个删除,可以执行以下操作:

DELETE from sheets where id in (
SELECT sheets.id
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13);
DELETE from entries where id in (
SELECT entries.id
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13);

MySQL允许您通过连接进行删除,但您必须指定哪些列,因此使用您的示例,正确的语法应该是

DELETE sheets.*, entries.* FROM sheets, entries WHERE entries.sheetID = sheets.id AND sheets.clientID = 13 删除工作表中的工作表。*,条目。*,其中entries.sheetID=sheets.id和sheets.clientID=13
您是要从工作表、条目中删除行,还是同时从两者中删除行?Andomar:我想从客户端13中删除所有工作表和工作表条目。如果不是真的需要,我不想使用超过一个查询。问题是我想同时从两个查询中删除。我想从客户端13删除所有工作表和工作表条目。如果不是真的需要的话,我不想使用超过1个查询。MySQL实际上允许多表删除。谢谢Andomar,每天都是上学的日子!第二个将失败,因为您已经删除了连接表的行。这在MySQL中显然不正确,正如其他答案中所述,MySQL支持OP尝试创建的DELETE语句(语法稍有不同)。另一个正确但文档记录稍少的答案:)谢谢! DELETE sheets.*, entries.* FROM sheets, entries WHERE entries.sheetID = sheets.id AND sheets.clientID = 13