当前位置: 首页 > 知识库问答 >
问题:

使用SqlCommand从多个表中删除

匡翰
2023-03-14
    var delete = new SqlCommand("DELETE Posts, Comments FROM Posts INNER JOIN Comments ON Posts.PostId = Comments.PostId WHERE Posts.PostId = @PostId;");
    delete.Parameters.AddWithValue("@PostId", postId);
    _dataAccess.ExecuteQuery(delete);

system.data.sqlclient.sqlexception:“”、“.”附近的语法不正确

共有1个答案

秦雅逸
2023-03-14

您的问题出现在SQL语句中,它是无效的。

您应该将语句分为两个:

首先删除注释,然后删除帖子

var deleteComments = new SqlCommand("DELETE Comments FROM Posts INNER JOIN Comments ON Posts.PostId = Comments.PostId WHERE Posts.PostId = @PostId;");
        deleteComments.Parameters.AddWithValue("@PostId", postId);
        _dataAccess.ExecuteQuery(deleteComments);
        
var deletePosts = new SqlCommand("DELETE Posts WHERE PostId= @PostId;");
        deletePosts.Parameters.AddWithValue("@PostId", postId);
        _dataAccess.ExecuteQuery(deletePosts);
var delete = new SqlCommand("DELETE Comments FROM Posts INNER JOIN Comments ON Posts.PostId = Comments.PostId WHERE Posts.PostId = @PostId; DELETE Posts WHERE PostId= @PostId;");
            delete.Parameters.AddWithValue("@PostId", postId);
            _dataAccess.ExecuteQuery(delete);
CREATE TABLE Posts (PostId  INT, PostText varchar(20))
CREATE TABLE Comments (CommentId INT, PostId INT, CommentText varchar(20))

INSERT INTO Posts VALUES (1, 'text')
INSERT INTO Comments VALUES (1,1, 'comment here')
DELETE Posts, Comments FROM Posts INNER JOIN Comments ON Posts.PostId = Comments.PostId WHERE Posts.PostId = 1

它给了我同样的错误

当我跑的时候

DELETE Comments FROM Posts INNER JOIN Comments ON Posts.PostId = Comments.PostId WHERE Posts.PostId = 1;

DELETE Posts WHERE PostId = 1;

工作很好。

 类似资料:
  • 问题内容: 我正在尝试使用SQL从连接在一起的多个表中删除多行。 表A连接到表B表B连接到表C 我想删除表B和C中与表A中的一行相对应的所有行 问题答案: 好吧,如果您使用过InnoDB表,则可以使用外键设置级联删除,这将自动完成所有操作。但是,如果您出于某种原因使用MyISAM,则只需使用多表DELETE即可:

  • 问题内容: 考虑2个或更多表: 我希望删除所有与名字“ Sam ”匹配的 用户 及其 订单 。在mysql中,我通常会做左连接。在此示例中,我们不知道userid。 查询的正确格式是什么? 问题答案: http://www.postgresql.org/docs/current/static/sql- delete.html 您也可以使用 http://www.postgresql.org/doc

  • 问题内容: 这是正确的方法吗? 问题答案: 对,那是正确的。在这里工作正常: 如果对您不起作用,则可以修改此示例以显示您遇到的问题。

  • 问题内容: 这是我想做的事情: 从表中删除一个项目,并在表中删除与该项目关联的所有图像。 可以说 此查询有什么问题? 问题答案:

  • 问题内容: 在MySQL中,您可以使用语法 如何在SQL Server中执行相同的操作? 问题答案: 在此示例中,您可以利用“已删除”伪表。就像是: 显然,您可以执行“已删除输出”。如果您需要在第三张表上加入某些内容,也可以在第二个删除上使用。 作为附带说明,您也可以在插入语句上执行insert。,在更新语句上同时进行insert。和Deleted。*。 编辑: 另外,您是否考虑过在table1上

  • 问题内容: 这个问题已经在这里有了答案 : 如何从MySQL中的多个表中删除? (7个答案) 2年前关闭。 我有4个表,每个表存储有关用户的不同信息。每个表都有一个带有user_id的字段,用于标识哪个行属于哪个用户。如果要删除用户,这是从多个表中删除该用户信息的最佳方法吗?我的目标是在一个查询中做到这一点。 查询: 问题答案: 您可以使用选项在表上定义外键约束。 然后,从父表中删除记录将从子表中