Разница между GROUP BY и DISTINCT

Допустим есть следующая таблица:

+----+--------+---------+---------+
| id | lang   | engine  | version |
+----+--------+---------+---------+
| 1  | PHP    | Laravel | 7       |
+----+--------+---------+---------+
| 2  | PHP    | Laravel | 8       |
+----+--------+---------+---------+
| 3  | Python | Django  | 3       |
+----+--------+---------+---------+
| 4  | Ruby   | RoR     | 6       |
+----+--------+---------+---------+
| 5  | PHP    | Yii     | 2       |
+----+--------+---------+---------+

Команда GROUP BY группирует записи по указанному полю.

SELECT lang,engine FROM posts GROUP BY lang

В результате записи покажутся в следующем виде:

+--------+---------+
| lang   | engine  |
+--------+---------+
| PHP    | Laravel |
+--------+---------+
| Python | Django  |
+--------+---------+
| Ruby   | RoR     |
+--------+---------|

DISTINCT

Команда DISTINCT работает аналогично, только выводит записи, чтобы связка из нескольких полей не повторялась.

SELECT DISTINCT lang,engine FROM posts

В результате записи покажутся в следующем виде:

+--------+---------+
| lang   | engine  |
+--------+---------+
| PHP    | Laravel |
+--------+---------+
| PHP    | Yii     |
+--------+---------+
| Python | Django  |
+--------+---------+
| Ruby   | RoR     |
+--------+---------|