开发者社区 问答 正文

用姓名和另外一个条件做唯一性校验,公式如何设置?

状态有好几种:如在外面,已返回、未出发等, 用姓名和状态中的一种(已返回)做唯一性校验,公式如何设置? 我用了EXIST()函数,但两个条件不会设置,请赐教

我用了AND(NE(状态,"已返回"),EXIST(姓名)),就是已返回的人能再次提交,否则只能提交一次。但是这个公式不能实现我的要求,所有状态的人都不能再次提交了。

展开
收起
游客5np2por5abeak 2022-01-24 18:56:50 1481 分享 版权
阿里云 AI 助理回答

为了实现您的需求,即通过姓名和特定状态(如“已返回”)来唯一性校验,确保每个姓名仅能有一次“已返回”的状态记录,您可以调整EXISTS函数的使用方式。根据您的描述,您希望避免已经标记为“已返回”的人员再次提交“已返回”的状态。这里提供一个调整后的逻辑示例:

正确的逻辑应当是检查数据库中是否已经存在该姓名且状态为“已返回”的记录。如果存在这样的记录,则不允许再次提交“已返回”。这可以通过子查询实现,而不是直接在EXIST函数中使用AND条件。下面是一个可能的SQL表达式结构,用于实现这一逻辑检查:

SELECT 
    姓名,
    状态
FROM 
    你的表名 AS t1
WHERE 
    状态 = '已返回'
    AND EXISTS (
        SELECT 1 
        FROM 你的表名 AS t2
        WHERE t2.姓名 = t1.姓名 
        AND t2.状态 = '已返回'
        AND t2.主键ID <> t1.主键ID -- 确保不是自己和自己比较
    );

这段SQL的目的是找出所有尝试标记为“已返回”的记录,但这些记录的姓名已经在其他行中有了“已返回”的状态。这里假设主键ID是每条记录的唯一标识符,用于排除自我比较的情况。

然而,从您的问题来看,似乎您是在设置某种数据验证规则或公式,而非直接编写SQL查询。如果是这种情况,具体的实现方式会依赖于您所使用的具体系统或平台(如Excel、数据库触发器、应用程序逻辑等)。基于通用逻辑,您需要构建一个检查机制,在提交新状态前,先查询数据库中是否已有该姓名对应的“已返回”记录。如果存在,则拒绝此次提交。

如果您是在Excel环境中进行数据验证,可以考虑使用VBA宏或者更复杂的数组公式来实现类似逻辑,但这超出了直接回答范围,且未在提供的参考资料中提及具体操作方法。对于非SQL环境下的实现,请参照上述逻辑自定义适合您应用场景的验证规则。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答