Использовал ли Common Table Expressin

«Использовал ли Common Table Expressin» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go можно использовать Common Table Expressions (CTE) при работе с базами данных через SQL-запросы. CTE — это временные результаты запроса, которые можно ссылаться в основном запросе.

Пример с database/sql и PostgreSQL:

query := `
WITH recent_users AS (
    SELECT id, name FROM users WHERE created_at > NOW() - INTERVAL '7 days'
)
SELECT * FROM recent_users ORDER BY name;
`
rows, err := db.Query(query)
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

CTE поддерживаются большинством СУБД (PostgreSQL, MySQL, SQLite и др.), но синтаксис может незначительно отличаться. В Go сам язык не обрабатывает CTE — это выполняется на стороне БД.