У меня проблема с запросом в mysql
.Я пишу веб-приложение на Laravel, и мне нужно было написать необработанный запрос для моих данных.Запрос
WITH sorted_messages AS (
SELECT
IF(user_from = 3, user_to, user_from) AS other_user,
content,
created_at,
ROW_NUMBER() OVER (PARTITION BY other_user ORDER BY created_at DESC) AS rn
FROM messages AS m
WHERE user_from = 3 OR user_to = 3
)
SELECT
name,
p.image_url as image_url,
users.id,
content,
sm.created_at
FROM
users LEFT JOIN sorted_messages AS sm ON users.id = other_user
LEFT JOIN profiles AS p ON users.id = p.user_id
WHERE (rn = 1 OR rn IS NULL) AND users.id != 3
ORDER BY created_at DESC
LIMIT 10
Я убедился, что режим mysql
ONLY_FULL_GROUP_BY
отключен.Я изменил свой config/database.php
на 'mysql'
:
'modes' => [
"STRICT_TRANS_TABLES",
"NO_ZERO_IN_DATE",
"NO_ZERO_DATE",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_AUTO_CREATE_USER",
"NO_ENGINE_SUBSTITUTION",
],
Когда я запускаю это в Linux, оно работает, а в Windows - нет.Ответ
Illuminate\Database\QueryException: SQLSTATE[42000]:
Syntax error or access violation: 1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right
syntax to use near 'sorted_messages AS (
Я пытался вручную отключить режим ONLY_FULL_GROUP_BY
в настройках mysql
, но это не помогло.