我正在尝试使用 taudenmeirs 的 laravel-cte 包将以下 SQL 查询转换为 Laravel 代码。
WITH `cte` AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY channel_id ORDER BY created_at DESC) AS row_number
FROM `Videos`
)
SELECT `Channels`.*, `cte`.*
FROM `Channels`
LEFT JOIN `cte`
ON `Channels`.`id` = `cte`.`channel_id`
WHERE `cte`.`row_number` = 1;
问题是我不断从服务器收到以下响应:
Illuminate\Database\QueryException: SQLSTATE[42000]: 语法错误或访问冲突:1140 没有 GROUP 列的 GROUP 列 (MIN(),MAX(),COUNT(),...) 的混合是非法的 如果没有 GROUP BY 子句 (SQL: with cte as (select , ROW_NUMBER() OVER (PARTITION BY channel_id ORDER BY created_at DESC) AS row_number from Videos) select Channels. from Channels left join cte on Channels.id = cte.channel_id where cte.rn = 1) 在第 665 行的文件 /Users/mark/Workspace/api.site/vendor/laravel/framework/src/Illuminate/Database/Connection.php