Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 从一些平均值中选择最大值后的SQL更新_Mysql_Sql_Sql Update_Max_Average - Fatal编程技术网

Mysql 从一些平均值中选择最大值后的SQL更新

Mysql 从一些平均值中选择最大值后的SQL更新,mysql,sql,sql-update,max,average,Mysql,Sql,Sql Update,Max,Average,我有两个列相同但数据不同的表。我需要用一些过滤器计算一个表中一列的平均值,并选择它们的最大值。然后将该值放入第二个表中。 到目前为止,我构建了以下查询: UPDATE st16 INNER JOIN st17 ON st17.parent = st16.uid SET st16.p1 = SELECT MAX( (SELECT AVG(st17.p1) FROM st17 WHERE st17.parent = st16.uid AN

我有两个列相同但数据不同的表。我需要用一些过滤器计算一个表中一列的平均值,并选择它们的最大值。然后将该值放入第二个表中。 到目前为止,我构建了以下查询:

UPDATE st16 
    INNER JOIN st17 ON st17.parent = st16.uid 
    SET 
        st16.p1 = SELECT MAX(
            (SELECT AVG(st17.p1) FROM st17 WHERE st17.parent = st16.uid AND st17.row = st16.row)), 
        st16.p2 = SELECT MAX(
            (SELECT AVG(st17.p2) FROM st17 WHERE st17.parent = st16.uid AND st17.row = st16.row))
但我得到了这个错误:1111-组函数的使用无效。 有什么想法吗?谢谢

样本数据首先是st17,下面是st16:

+----------------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+---------------------+---------------------+-----+
| uid                              | parent                           | fen                                                                                                            | p1                  | p2                  | row |
+----------------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+---------------------+---------------------+-----+
| ee95b564f2b3fa1573b451d8f4e00f5d | bc5ef0d66b3bde08b0ba35a91412c058 | QS7D8D/4H9HQH4D4S/6H8HTHJHKH/4CAS/9S9D7CJC9C/6C8CQCKCAC/6D5D3D2DKSJSTS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD | -10.481481481481481 |  10.481481481481481 |   1 |
| 691ed545dd5375cb3e75f0b8d032534b | bc5ef0d66b3bde08b0ba35a91412c058 | QS7D6D/4H9HQH4D4S/6H8HTHJHKH/4CAS/9S9D7CJC9C/6C8CQCKCAC/5D3D2DKSJSTS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D | -10.481481481481481 |  10.481481481481481 |   1 |
| b6e2a3f4ea51c8e6638a2cc657bf3511 | bc5ef0d66b3bde08b0ba35a91412c058 | QS7D5D/4H9HQH4D4S/6H8HTHJHKH/4CAS/9S9D7CJC9C/6C8CQCKCAC/3D2DKSJSTS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D | -10.481481481481481 |  10.481481481481481 |   1 |
| 0dbe5038d01e457e4f65415ac081d0dd | bc5ef0d66b3bde08b0ba35a91412c058 | QS7D3D/4H9HQH4D4S/6H8HTHJHKH/4CAS/9S9D7CJC9C/6C8CQCKCAC/2DKSJSTS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D5D | -10.481481481481481 |  10.481481481481481 |   1 |
| ca1e85058ed8294d60a9922d36f8c1fa | bc5ef0d66b3bde08b0ba35a91412c058 | QS7D2D/4H9HQH4D4S/6H8HTHJHKH/4CAS/9S9D7CJC9C/6C8CQCKCAC/KSJSTS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D5D3D | -10.481481481481481 |  10.481481481481481 |   1 |
| e85179f395ba8e441ff7b1544e05404c | c75eb9315dee4e3b42fb52e8cd509910 | QS7DJS/4H9HQH4D4S/6H8HTHJHKH/4CKS/9S9D7CJC9C/6C8CQCKCAC/TS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D5D3D2DAS |  -9.703703703703704 |   9.703703703703704 |   1 |
| eb3c352febe8ff25f375032bbb6cc5d7 | c75eb9315dee4e3b42fb52e8cd509910 | QS7DTS/4H9HQH4D4S/6H8HTHJHKH/4CKS/9S9D7CJC9C/6C8CQCKCAC/8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D5D3D2DASJS |  -9.703703703703704 |   9.703703703703704 |   1 |
| 69f06801edf9b3cf669df56dc9152271 | c75eb9315dee4e3b42fb52e8cd509910 | QS7D8S/4H9HQH4D4S/6H8HTHJHKH/4CKS/9S9D7CJC9C/6C8CQCKCAC/7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D5D3D2DASJSTS |  -9.703703703703704 |   9.703703703703704 |   1 |
| 5f78082dd3aee8b51bf096286df5e4e7 | c75eb9315dee4e3b42fb52e8cd509910 | QS7D5H/4H9HQH4D4S/6H8HTHJHKH/4CKS/9S9D7CJC9C/6C8CQCKCAC/3H2HTC5C3C2CADKDQDJDTD8D6D5D3D2DASJSTS8S7S6S5S3S2SAH7H |  -9.703703703703704 |   9.703703703703704 |   1 |
| 7ee50e8aa1afd3af703b3a5b3cdf3cf8 | c75eb9315dee4e3b42fb52e8cd509910 | QS7D3H/4H9HQH4D4S/6H8HTHJHKH/4CKS/9S9D7CJC9C/6C8CQCKCAC/2HTC5C3C2CADKDQDJDTD8D6D5D3D2DASJSTS8S7S6S5S3S2SAH7H5H |  -9.703703703703704 |   9.703703703703704 |   1 |
+----------------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+---------------------+---------------------+-----+

+----------------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+----+----+-----+
| uid                              | parent                           | fen                                                                                                            | p1 | p2 | row |
+----------------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+----+----+-----+
| bc5ef0d66b3bde08b0ba35a91412c058 | 9e123e356e468b847d4493cf55809fcd | QS7D/4H9HQH4D4S/6H8HTHJHKH/4CAS/9S9D7CJC9C/6C8CQCKCAC/KSJSTS8S7S6S5S3S2SAH7H5H3H2HTC5C3C2CADKDQDJDTD8D6D5D3D2D |  0 |  0 |   1 |
+----------------------------------+----------------------------------+----------------------------------------------------------------------------------------------------------------+----+----+-----+

正如Gordon Linoff提到的,您不能将子查询传递给聚合函数,例如MAX。您可能会遇到另一个问题:您无法从MySQL中更新的表中进行选择。像这样的

UPDATE st16 
SET 
    st16.p1 = (SELECT AVG(st17.p1) FROM st17 JOIN st16 ON st17.parent = st16.uid WHERE st17.row = st16.row ORDER BY AVG(st17.p1) DESC LIMIT 1), 
    st16.p2 = (SELECT AVG(st17.p2) FROM st17 JOIN st16 ON st17.parent = st16.uid WHERE st17.row = st16.row ORDER BY AVG(st17.p2) DESC LIMIT 1);

不幸的是,这行不通。您可能只想将其分解为多个查询;也就是说,首先在SELECT中检索最大平均值,然后在第二次单独更新中发送这些结果

不能将子查询用作聚合函数的参数。你能提供一些样本数据和期望的结果吗?至少我不清楚您想做什么。因此,我在这里放了一些数据表的摘录:如图所示,用黄色突出显示的是我需要处理的部分数据样本:在表st17中,我需要计算行数为1的行数的平均值。可能还有另外1或2个这样的集合,但行=2和行=3。我也需要它们。然后,我需要选取3个平均值中的最大值,并更新表st16.p1中的行,该行的uid突出显示了该最大值。@xybox。你应该把数据和期望的结果放在问题中。首先,你的照片不可读。第二,链接随时可能过期。我不明白为什么你认为图像不可读。显然,你需要在100%缩放时看到它,或者它可能会过期,因为它是一个dropbox。然而,我还不能将图片发布到问题的主体中,需要10个信誉点,我是新注册的。无论如何谢谢你的帮助。@xybox。将问题中的数据作为文本,而不是图像。