c# - 遍历记录并根据条件更新数据库

标签 c# sql asp.net sql-server

我有一张表Person:

enter image description here

其中ID为主键,Male为男性总数,Female为女性总数, Person_ID 列固定为 4,因此男性 + 女性的最大数量为 4(我们不必验证这一点)。

我需要在最后一列 Is_Valid 中插入/更新 YesNo 的值,以确定记录是否有效。

逻辑是这样的:比如男女总数是3,那么人的ID就得有3个,或者男女总数是2,就得有2个人的ID数据。

所以记录ID 3和4是无效的,因为记录3 - 有2个人(1男1女)但是只有1个人ID,记录4有1个人(1女性)但是没有人完全没有 ID 数据。

我需要在 C# 代码中以编程方式执行此操作,但首先我想知道可以解决此问题的查询?

我一直在想的逻辑是:

  • 遍历每一行
  • 得到男性+女性的总和= a
  • 以某种方式计算非空个人 ID 单元格 = b
  • 如果 a == b 则插入 YES 否则插入 NO

我不知道如何编写查询(或存储过程),我想它会有点复杂。任何帮助将不胜感激。

最佳答案

UPDATE TABLE
SET Is_Valid = CASE WHEN (
               Case when Person1_ID != '' or Person1_ID IS NOT NULL Then 1 else 0 end +
               Case when Person2_ID != '' or Person2_ID IS NOT NULL Then 1 else 0 end +
               Case when Person3_ID != '' or Person3_ID IS NOT NULL Then 1 else 0 end +
               Case when Person4_ID != '' or Person4_ID IS NOT NULL Then 1 else 0 end ) != Male + Female THEN 'NO' ELSE 'YES' END

关于c# - 遍历记录并根据条件更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401935/

相关文章:

android - 服务器无法处理请求。连接未关闭

c# - 如何在下拉列表中向用户显示大量数据?

c# - 反射 - 检查所有可为空的属性是否有值

c# - 图片框和图像映射的工具提示

c# - C#中的自动编码检测

mysql - SQL WHERE 条件不等于?

mysql - LIMIT 1 怎么可能使查询变慢

SQL - 唯一键、主键和外键

asp.net - HTML 元素重叠

c# - WindowsIdentity.Impersonate in ASP.NET 随机 "Invalid token for impersonation - it cannot be duplicated"