当前位置: 首页 > 面试题库 >

在WHERE子句中使用“泪N”,其中集合中的项数非常大

喻子航
2023-03-14
问题内容

我遇到的情况是,我需要对只能通过其ID识别的非常大的行集进行更新(因为目标记录是由用户选择的,除了它是用户的记录集之外,没有其他共同点想要修改)。正在所有这些记录上更新相同的属性,因此我想进行一个UPDATE调用

这是一种不好的做法,还是比在UPDATE语句中使用“ WHERE IN(1,2,3,4,..... 10000)”更好的方法来进行此更新?

为每条记录使用单独的更新语句并将它们粘贴到单个事务中是否更有意义?现在,我正在使用SQL
Server和Access,但是,如果可能的话,我想听听有关任何类型的关系数据库的更广泛的最佳实践解决方案。


问题答案:

我会一直使用

WHERE id IN (1,2,3,4,.....10000)

除非你的条款是 愚蠢的 大,这实在不应该由用户输入的发生。

编辑:例如,Rails在幕后做了很多工作

在单个事务中单独执行更新语句绝对不会更好。



 类似资料:
  • 问题内容: 当然,有一种框架方法可以给定整数,字符串等数组,将它们转换为可在SQL“ ”子句中使用的列表? 例如 会去 问题答案: var inClause = “(“ + String.Join(“,”, values.Select(x => x.ToString()).ToArray()) + “)”; 注意 :您不再需要在.NET Framework 4中调用。添加了一个新方法。

  • 问题内容: 我在某处看到此查询- 什么是 “N” 是什么意思?我不确定这是否仅对SQL Server有效。 问题答案: N代表“国家字符”,它表示字符串的内容为Unicode。 只要碰到专有名称或其他可能包含默认ASCII字符集以外的字符的实体,就应该使用Unicode(/ )。如果不使用前缀将此类字符串括起来,则会丢失数据。例如: 结果: 您还应确保在您或其他子句中对列使用前缀。不使用前缀时,由

  • 问题内容: 我一直在为整个查询尝试正式向我做噩梦的查询。该系统是用户和联系人管理。所以我有,和。 与手机具有双向一对多关系,并且在电话上具有单向关系,所有关系均由映射: 现在,“联系人”具有一对多电话通话 我正在编写一种方法,通过电子邮件唯一字段来检查特定用户的同一联系人是否存在相同号码。 我知道我可以为此而覆盖and ,但是由于电话是按set映射的实体,因此我现在不知道该怎么做。因此,我想提供一

  • 问题内容: 简而言之,我有一个表格,其中除其他外,还包含一个用于时间戳记的列。我想获得具有最新(即最大价值)时间戳的行。目前,我正在这样做: 但是我宁愿做这样的事情: 但是,SQLite拒绝此查询: 该文件证实了这一行为(页面底部): 聚合函数只能在SELECT语句中使用。 我的问题是:是否可以编写查询以获取具有最大时间戳的行,而无需对select进行排序并将返回的行数限制为1?这似乎应该有可能,

  • 本文向大家介绍在SAP ABAP中的where子句中使用小数,包括了在SAP ABAP中的where子句中使用小数的使用技巧和注意事项,需要的朋友参考一下 您正在尝试在查询中使用特定于用户的设置,但ABAP不支持它。您需要使用“。” 作为小数点分隔符,而不是','。 所以查询看起来像-

  • 问题内容: 在WHERE子句中有使用SELECT语句描述的名称吗?这是好/不好的做法吗? 这会是更好的选择吗? 它远没有那么优雅,但是运行起来比以前的版本要快。我不喜欢它,因为它在GUI中没有非常清晰地显示(并且SQL初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得混乱了…… 注意:我不仅需要日期和分数(例如姓名) 问题答案: 称为相关子查询。它有它的用途。