我有命令
SELECT * FROM
(SELECT * FROM episodes ORDER BY created_at DESC) and t1
GROUP BY serial_id
ORDER BY created_at DESC
我将返回系列的最后一集由created_at
添加。但问题是,当我把它放在主机上的时候,一切都工作了,但现在我把它放在VPS服务器上,我总是列出第一集。如果我在group by serial_id
之后添加desc
,它可以工作,但在laravel (-> groupBy ('serial_id')
)上是不可能的
共享托管:
+---------+-------------+--------+
| id | serial_id | part |
+---------+-------------+--------+
| 8124 | 12 | s02e10 |
| 362 | 8 | s09e12 |
| 4673 | 9 | s01e12 |
| 871 | 4 | s03e24 |
+---------+-------------+--------+
我的VPS。
+---------+-------------+--------+
| id | serial_id | part |
+---------+-------------+--------+
| 8124 | 12 | s01e01 |
| 362 | 8 | s01e01 |
| 4673 | 9 | s01e01 |
| 871 | 4 | s01e01 |
+---------+-------------+--------+
提前感谢您的帮助
看来你的查询有很多错误。
缺少FROM
和ORDER BY
之间的表名
SELECT * FROM (SELECT * FROM
-- ^^ where is the tablename ?
ORDER BY episodes created_at DESC) and t1 GROUP BY ORDER BY serial_id created_at DESC
-- ^^ missing comma, ^^ this 'and' seems in the wrong place and you havent't column for group by and in last another missing comma
试试这样:
SELECT * FROM ( SELECT *
FROM my_table ORDER BY episodes, created_at DESC) t1
GROUP BY my_column_for_group_by
ORDER BY serial_id, created_at DESC
在laravel中,您可以使用:
来指定顺序方向。 ->orderBy('serial_id')
->orderBy('created_at', 'DESC')
在这种情况下,您可能不得不使用RAW格式:groupBy(DB::raw('serial_id desc'))
DB::table( DB::raw("(SELECT * FROM episodes ORDER BY created_at DESC) and t1") )->groupBy(DB::raw('serial_id desc'))->orderBy('created_at', 'desc')->get();