Java 从一列中选择数据,并根据条件更新另一列

Java 从一列中选择数据,并根据条件更新另一列,java,mysql,sql,database,oracle,Java,Mysql,Sql,Database,Oracle,我有一个这样的结构 Table LatestData **Name Version** Name1 1.2 Name2 1.4 Name3 1.6 Name4 1.3 Name5 2.2 Table CurrentData Name CurrentVersion Compliance Name1 1.0 Name3 0.7 Name4 1.2 我需要根据以下条件

我有一个这样的结构

Table LatestData
**Name        Version**
Name1       1.2  
Name2       1.4
Name3       1.6
Name4       1.3
Name5       2.2

Table CurrentData
Name        CurrentVersion   Compliance
Name1       1.0
Name3       0.7
Name4       1.2
我需要根据以下条件更新合规性列: N=最新版本(来自最新数据表的版本)

  • 如果CurrentData表中的currentVersion小于(N-2);合规=完全合规
  • 如果CurrentData表中的currentVersion介于大于(N-2)和小于(N-4)之间;合规性=部分合规性
  • 如果CurrentData表中的currentVersion>N-5;合规=不合规
  • 您能帮我查询更新表CurrentData的合规性列吗


    感谢和问候

    我已经有一段时间没有编写任何SQL了,但是因为您请求的是一个示例查询,所以我想尝试一下。如果我的答案没有达到预期效果,也许其他人可以纠正我的答案

    UPDATE CurrentData
    JOIN LatestData on
        CurrentData.Name = LatestData.Name
    SET Compilance = IF(CurrentVersion < Version - 2, 'FULL', IF(CurrentVersion > Version - 2 && CurrentVersion < Version - 4, 'Partial', IF(CurrentVersion > Version - 5, 'Not compilant', 'Nope')));
    
    更新当前数据
    在上加入最新数据
    CurrentData.Name=LatestData.Name
    设置编译=IF(CurrentVersionVersion-2&&CurrentVersionVersion-5',Not Compileant',Nope');
    

    这已经过测试,应该运行良好=)

    我真的不明白你在追求什么。考虑提供一个具有代表性的例子(包括DDLs和/或SqLoFIDLE),并与期望的结果集一起。更新问题。不知何故,“大于”和“小于”的标志被空白所取代。根据两个版本列之间的差异,我需要更新我的compliance列。到目前为止,我只能获取映射到名称的数据,并且。。。你有什么问题?你知道这个案子吗。。。什么时候然后。。。其他的结束???谢谢亚历克斯,我不知道这个案子。我会调查的。你能推荐一些与我的问题很接近的示例查询吗?它确实有帮助,但无法运行它,因为连接没有发生,if-else发出错误OK,我重写并测试了它。“现在它应该按预期工作了。”SandiipPatil那么,它有什么帮助吗?