4
我想了解GROUP BY對SQLite的v2.8.17SQLite的:GROUP BY無骨料
這裏一個奇怪的行爲是代碼:
<?php
$selectMaxQuery = $this->_db->prepare('SELECT COUNT(*) AS c FROM (SELECT MAX(groupCode) FROM docs GROUP BY groupCode)');
$selectQuery = $this->_db->prepare(' SELECT COUNT(*) AS c FROM (SELECT groupCode FROM docs GROUP BY groupCode)');
$selectMaxQuery->exec();
$selectQuery->exec();
var_dump($selectMaxQuery->fetch()->c, $selectQuery->fetch()->c);
下面是結果:
string(3) "614"
string(3) "797"
無處不在我在互聯網上,它說,GROUP BY行爲是將幾行合併爲一個。在不使用聚合函數的情況下,它應該給我一個錯誤,或者爲GROUP BY或聚合函數中的每一行都選擇一個隨機值。
結果似乎與我所瞭解的不同。
有人可以解釋我什麼,我在這裏失蹤?
但是你有GROUP BY中的列,所以沒有問題,不會選擇一個隨機值。也適當的數據庫引擎不會給隨機行,默認情況下MySQL。 –
這就是我說的,對吧? '對於每一行,也不在GROUP BY中,也不在聚合中。這裏是在GROUP BY中,所以我不明白爲什麼結果不同,使用或不使用分組字段的聚合函數? – zenko
這兩個子選擇返回的行數應該相同,因爲您在同一個字段上進行分組。所以count(*)也應該是相同的,除非在運行查詢時添加了行。你的結果對我毫無意義。 – Anand