Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL更新行_Mysql_Sql - Fatal编程技术网

MYSQL更新行

MYSQL更新行,mysql,sql,Mysql,Sql,这里是我非常大的示例表的一个小示例。我试图通过对具有多个sprint的特性进行分组来确定max sprint。在识别它们之后,我想用一个值更新review列 测试表 Feature | Sprint | Review ------------------------------- Code001 | 100 | Code002 | 100 | Code001 | 101 | Code003 | 100 | Code003 |

这里是我非常大的示例表的一个小示例。我试图通过对具有多个sprint的特性进行分组来确定max sprint。在识别它们之后,我想用一个值更新review列

测试表

Feature   |  Sprint  |  Review 
-------------------------------
Code001   |  100     |
Code002   |  100     |
Code001   |  101     |
Code003   |  100     |
Code003   |  100     |
Code004   |  101     |
Feature   |  Sprint  |  Review 
-------------------------------
Code001   |  100     |
Code002   |  100     |
Code001   |  101     | Feature File Modified
Code003   |  100     |
Code003   |  100     |
Code004   |  101     |
我的问题是:

SELECT feature, MAX(sprint), review
FROM TEST_TABLE
WHERE feature IN (select feature 
                  from TEST_TABLE
                  GROUP BY feature
                  HAVING COUNT(distinct sprint)>1
                 )
GROUP BY feature
结果:

Feature   | Max(sprint)| Review
--------------------------------
Code001   |  101       |
问题:上面的查询选择了正确的结果,但我不知道如何更新review列。在我更新了评论栏之后,我希望我的结果最后看起来像这样

测试表

Feature   |  Sprint  |  Review 
-------------------------------
Code001   |  100     |
Code002   |  100     |
Code001   |  101     |
Code003   |  100     |
Code003   |  100     |
Code004   |  101     |
Feature   |  Sprint  |  Review 
-------------------------------
Code001   |  100     |
Code002   |  100     |
Code001   |  101     | Feature File Modified
Code003   |  100     |
Code003   |  100     |
Code004   |  101     |
任何帮助都会很好。提前谢谢

如果要更新所有这些功能,可以使用:

update test_table tt join
       (select feature 
        from TEST_TABLE
        group by feature
        having count(distinct sprint) > 1
       ) ttt
       on ttt.feature = tt.feature
    set tt.review = 'Feature File Modified';
这与你的例子不完全相同。您似乎希望修改除第一个之外的所有内容。我认为是这样的:

update test_table tt join
       (select feature , min(sprint) as minsprint
        from TEST_TABLE
        group by feature
        having count(distinct sprint) > 1
       ) ttt
       on tt.feature = ttt.feature and
          tt.sprint > ttt.minsprint
    set tt.review = 'Feature File Modified';

您的示例查询确实有意义。例如,它使用MAX而不使用groupby。您需要更清楚地了解示例数据和所需结果。而且语法不正确,因为您没有显示任何与更新Review columnSELECT功能MAXsprint相关的代码,从test_20170116中进行回顾,其中test_20170116中的select feature(按COUNTsprint>1的功能分组)中的功能我的问题是如何编写更新以获得最终结果。我被卡住了。上面的查询几乎得到了我想要的。问题是,在我的示例中,sprint可能不仅仅是100和101。如果一个特征有100、101和102。。。当我只更新102时,上面的更新将更新101和102的审阅行。我可以通过修改上面的代码来修复它。这就解决了我的问题:更新TEST_TABLE tt join select特性,通过在tt.feature=ttt.feature和tt.sprint=ttt.maxsprint set tt.review='feature File Modified'上具有countdistinct sprint>1 ttt的特性,从TEST_TABLE组中将maxsprint作为maxsprint更新;