表:

id     userid  friendid   name    status
1      1        2         venkat  false
2      1        3         sai     true
3      1        4         arun    false
4      1        5         arjun   false

如果用户发送userid=1,friendids=2,4,5 status=true

如何编写查询来更新上述内容?所有friendids个状态都是正确的.[2,3,4次]?

推荐答案

要更新其中一列,这里有一些语法选项:

Option 1

var ls=new int[]{2,3,4};
using (var db=new SomeDatabaseContext())
{
    var some= db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList();
    some.ForEach(a=>a.status=true);
    db.SubmitChanges();
}

Option 2

using (var db=new SomeDatabaseContext())
{
     db.SomeTable
       .Where(x=>ls.Contains(x.friendid))
       .ToList()
       .ForEach(a=>a.status=true);

     db.SubmitChanges();
}

Option 3

using (var db=new SomeDatabaseContext())
{
    foreach (var some in db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList())
    {
        some.status=true;
    }
    db.SubmitChanges();
}

Update

按照 comments 中的要求,展示如何更新多个列可能是有意义的.所以,为了这个练习的目的,我们不想只更新status个1.我们想更新namestatus,其中friendid是匹配的.以下是一些语法选项:

Option 1

var ls=new int[]{2,3,4};
var name="Foo";
using (var db=new SomeDatabaseContext())
{
    var some= db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList();
    some.ForEach(a=>
                    {
                        a.status=true;
                        a.name=name;
                    }
                );
    db.SubmitChanges();
}

Option 2

using (var db=new SomeDatabaseContext())
{
    db.SomeTable
        .Where(x=>ls.Contains(x.friendid))
        .ToList()
        .ForEach(a=>
                    {
                        a.status=true;
                        a.name=name;
                    }
                );
    db.SubmitChanges();
}

Option 3

using (var db=new SomeDatabaseContext())
{
    foreach (var some in db.SomeTable.Where(x=>ls.Contains(x.friendid)).ToList())
    {
        some.status=true;
        some.name=name;
    }
    db.SubmitChanges();
}

Update 2

在回答中,我使用LINQ to SQL,在这种情况下,要提交到数据库,用法是:

db.SubmitChanges();

但对于实体框架来说,提交更改是:

db.SaveChanges()

Sql相关问答推荐

PostgreSQL:获取每家店铺收入最高的员工

从列的不同值创建列

更新PostgreSQL 15中的JSON值

如何将我的联接数据放入每个用户每月多行的列中?

如何简化此PostgreSQL查询以计算平均值?

WooCommerce产品的SQL查询:获取sku和产品标签

使用与JOIN一起使用的查询后进行分页和排序

插入具有预期逻辑的查询以Forking 表

STContains、STIntersections和STWithin返回错误的地理结果

显示所有组并计算给定组中的项目(包括 0 个结果)

如何将 START 和 END 日期之间的日期差异作为 SQL 中的单独列获取

Clickhouse:左连接表到外部数组

JSON对象查询SQL服务器

如何优化仅返回符合条件的三条记录的查询?

正则表达式:停在第一个匹配的其中一个字符位置上

添加一列并根据其他列值进行填充

如果 SQL 中不存在数据,如何根据某个 ID 为所有日期添加前一行

如何找到特定时间间隔内的最大和最小日期?

有条件求和

SQL - 汇总多个表的结果