Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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在使用view和GroupBy时返回不同的结果_Mysql - Fatal编程技术网

mysql在使用view和GroupBy时返回不同的结果

mysql在使用view和GroupBy时返回不同的结果,mysql,Mysql,在mysql中使用view和GroupBy时,我得到了一个错误的结果 一个简单的表格测试 当使用普通语法作为 按名称asc从测试顺序中选择*从选择*,按test.name将值asc作为测试组 它回来了 id name value 2 a 100 4 b NULL 5 c 120 但是,如果将子查询替换为视图, 它显示了不同的结果 按名称asc、值asc从测试顺序中选择*创建视图test\u视图 按test.name从test_视图中选择*作为测试组 它回来了 id

在mysql中使用view和GroupBy时,我得到了一个错误的结果

一个简单的表格测试

当使用普通语法作为

按名称asc从测试顺序中选择*从选择*,按test.name将值asc作为测试组

它回来了

id  name value
2   a   100
4   b   NULL
5   c   120
但是,如果将子查询替换为视图, 它显示了不同的结果

按名称asc、值asc从测试顺序中选择*创建视图test\u视图

按test.name从test_视图中选择*作为测试组

它回来了

id  name value
1   a   200
3   b   150
5   c   120

我真的很烦,请有人给我一些提示。谢谢。

将其分组,然后排序结果,尝试以下更简单的相同结果:

select * from test group by name order by name asc, value asc
如果您真的需要进行子查询,它与第一个group by相同:

select * from (select * from test group by name) as test order by test.name asc, test.value asc
MySQL扩展了GROUPBY的使用,因此select列表可以引用GROUPBY子句中未命名的未聚合列。这意味着前面的查询在MySQL中是合法的。您可以使用此功能通过避免不必要的列排序和分组来获得更好的性能。但是,这主要是在GROUP BY中未命名的每个未聚合列中的所有值对于每个组都相同时才有用。服务器可以从每个组中自由选择任何值,因此,除非它们相同,否则选择的值是不确定的。此外,添加ORDERBY子句不会影响从每个组中选择值。结果集的排序发生在选择值之后,排序依据不影响服务器选择的值


没有任何迹象表明您的子查询技巧会产生影响,并确保您所希望的确定性结果select * from (select * from test group by name) as test order by test.name asc, test.value asc