【问题标题】:c# database sql inner join [closed]c#数据库sql内部连接
【发布时间】:2020-06-20 13:38:10
【问题描述】:

您好,我想将我的 ActivityClub 表与 Clubs 表进行内部连接,以便将其更新为 2 个表。但到目前为止,我的代码不起作用。我正在使用方法类和 SQL 数据库。 这是我得到 System.Data.SqlClient.SqlException 的错误:'关键字'INNER'附近的语法不正确。'

 public int updateactivity(string clubname, string clubdesc, string activity, string achv)
    {
        int status = 0;
        string updateSQL = "UPDATE ActivityClub SET club_desc=@desc, activity=@act, achievement=@acv INNER JOIN Clubs AS C1 ON C1.club_desc = Activity.club_desc WHERE club_name=@club";
        Connect();
        SqlCommand cmd = new SqlCommand(updateSQL, conn);
        
        cmd.Parameters.AddWithValue("@club", clubname);
        cmd.Parameters.AddWithValue("@desc", clubdesc);
        cmd.Parameters.AddWithValue("@act", activity);
        cmd.Parameters.AddWithValue("@acv", achv);
        status = cmd.ExecuteNonQuery();
        return status;
    }

【问题讨论】:

  • 请解释一下,没用是什么意思
  • 我得到了这个异常System.Data.SqlClient.SqlException: 'Incorrect syntax near the keyword 'INNER'.'
  • 你正在使用哪个数据库???
  • 如果您需要更新多个表,则必须执行多个更新命令。
  • 但是,如果您需要根据另一个表中的内容确定要更新一个表中的哪些行,则必须执行类似 Update a Set Bar=@Bar From TableToUpdate a Join AnotherTable b on a.Id = b.Aid Where b.Foo = @Foo 的操作

标签: c# sql database


【解决方案1】:

您使用的语法不正确。应该是这样的。我建议您编写一个存储过程并在 SP 中使用查询并从 C# 代码中调用它。

UPDATE 
    t1
SET 
    t1.c1 = t2.c2,
    t1.c2 = expression,
    ...   
FROM 
    t1
    [INNER | LEFT] JOIN t2 ON join_predicate
WHERE 
    where_predicate;

参考:https://www.sqlservertutorial.net/sql-server-basics/sql-server-update-join/

【讨论】:

    【解决方案2】:

    在 SQL Server 中,您需要这种语法(更新表集子句 ...FROM 表 JOIN 表 ON 子句...)

         string updateSQL = 
            "UPDATE ActivityClub 
            SET club_desc=@desc, activity=@act, achievement=@acv 
            FROM ActivityClub
            INNER JOIN Clubs AS C1 ON C1.club_desc = Activity.club_desc 
            WHERE club_name=@club";
    

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2018-02-14
      • 2014-04-05
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多