【问题标题】:insert into table 1 update table 2 column x from table 1 column y从表 1 列 y 插入表 1 更新表 2 列 x
【发布时间】:2019-07-06 11:07:37
【问题描述】:

我是 ASP.NET MVC 和 Sql Server 的新手 尝试插入表 1 第二步以从表 1 列 y 更新表 2 列 x。 更新整个列时的问题 x

我的桌子: 表车 (车牌号 汽车模型 颜色 车牌 汽车里程表)

表 JobInfo (作业编号 作业编号 日期 起始位置 目的地 开始里程表 里程表 停车处 车牌号 用户ID)

UPDATE Car SET CarOdometer = (SELECT TOP 1 EndOdometer FROM JobInfo WHERE CarId = Car.CarId ORDER BY EndOdometer DESC)

Update Car set Car.CarOdometer = JobInfo.EndOdometer from JobInfo where JobInfo.carId=( SELECT IDENT_CURRENT(JobInfo.CarId));

试图使用内部连接但不起作用

            string query1 = "INSERT INTO JobInfo (JobNum,Date,StartLocation,Destination,EndOdometer,Parking,CarId,StartOdometer)" +
                                                  "VALUES(@JobNum,@Date,@StartLocation,@Destination,@EndOdometer,@Parking,@CarId,@StartOdometer)";


            string query2 = "Update Car SET Car.CarOdometer = (Select top 1 JobInfo.EndOdometer FROM JobInfo INNER JOIN Car ON JobInfo.CarId = Car.CarId "+
                             "ORDER BY JobInfo.EndOdometer desc) WHERE Car.CarId = Car.CarId";
            sqlCon.Open();
            var sqlCmd1 = new SqlCommand(query1, sqlCon);
            var sqlCmd2 = new SqlCommand(query2, sqlCon);

            sqlCmd1.Parameters.AddWithValue("@JobNum", jobModel.JobNum);
            sqlCmd1.Parameters.AddWithValue("@Date", jobModel.Date.ToString());
            sqlCmd1.Parameters.AddWithValue("@StartLocation", jobModel.StartLocation);
            sqlCmd1.Parameters.AddWithValue("@Destination", jobModel.Destination);
            sqlCmd1.Parameters.AddWithValue("@EndOdometer", jobModel.EndOdometer);
            sqlCmd1.Parameters.AddWithValue("@Parking", Convert.ToDecimal(jobModel.Parking));
            sqlCmd1.Parameters.AddWithValue("@CarId", Convert.ToInt32(jobModel.CarId));
            sqlCmd1.Parameters.AddWithValue("@StartOdometer", Convert.ToInt32(jobModel.StartOdometer));
            //Updating CarOdometer from EndOdometer
            sqlCmd2.Parameters.AddWithValue("@CarOdometer", Convert.ToInt32(jobModel.CarOdometer));


            sqlCmd1.ExecuteNonQuery();
            sqlCmd2.ExecuteNonQuery();

仅更新 CarId=1 中的 CarOdometer 或依赖于 CarId 的 CarOdometer 将被使用应该更改而不是所有记录

感谢您的宝贵时间

【问题讨论】:

    标签: c# sql-server asp.net-mvc


    【解决方案1】:

    如果您不需要更改所有记录,但包含在 JobInfo 表中的记录,您可以检查它:

    UPDATE Car SET CarOdometer = (SELECT TOP 1 EndOdometer FROM JobInfo 
                   WHERE CarId = Car.CarId ORDER BY EndOdometer DESC) 
           WHERE EXISTS (SELECT TOP 1 EndOdometer FROM JobInfo 
                        WHERE CarId = Car.CarId ORDER BY EndOdometer DESC)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 2017-05-08
      • 2011-03-27
      • 2014-01-05
      • 2020-06-09
      • 1970-01-01
      相关资源
      最近更新 更多