假设我有一张桌子
+------+---------+--------+
| lang | title | url |
+------+---------+--------+
| pt | Livro 1 | o294jl |
| en | Book 1 | o294jl |
| en | Book 2 | o294jl |
+------+---------+--------+
Run Code Online (Sandbox Code Playgroud)
我运行一个查询
+------+---------+--------+
| lang | title | url |
+------+---------+--------+
| pt | Livro 1 | o294jl |
| en | Book 1 | o294jl |
| en | Book 2 | o294jl |
+------+---------+--------+
Run Code Online (Sandbox Code Playgroud)
由于组内 和 的值不同,lang查询结果并不明显。title
SQL 引擎如何选择从组中返回哪一行?在我的示例中必须选择哪一行?SQL标准中有规定吗?
从每个组的任意匹配行中选择值。对于不同的运行,这些值可能来自不同的行。理论上,同一列中的不同列SELECT可能来自不同的行。
该文档对此进行了解释:
如果
ONLY_FULL_GROUP_BY禁用,则标准 SQL 使用的 MySQL 扩展GROUP BY允许选择列表、HAVING条件或 ORDER BY 列表引用非聚合列,即使这些列在功能上不依赖于GROUP BY列。。。。在这种情况下,服务器可以自由地从每个组中选择任何值,因此除非它们相同,否则选择的值是不确定的,这可能不是您想要的。
您应该阅读有关该主题的完整文档。
请注意,MySQL 现在的默认行为是拒绝此类查询。耶!