php - Laravel/Mysql 分组排序

标签 php mysql laravel group-by sql-order-by

我有命令

 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 |
+---------+-------------+--------+

预先感谢您的帮助

最佳答案

您的查询中似乎有很多错误。

FROMORDER 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')

关于php - Laravel/Mysql 分组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39834562/

相关文章:

php - 使用 PHP mysql 显示阿拉伯数据时出错

Laravel 模型工厂没有看到我的应用程序

laravel - 从 Laravel 4.1 直接升级到 Laravel 5.3

python - MySQLdb - 何时提交和执行?

mysql - 选择有限制的平均值

MYSQL:如何用前一个条目填充列中的空值?

php - 使用keyby集合方法检索eloquent api资源

php - 使用 PHP 将分钟数转换为小时和分钟

PHP/MySQL 从多个 WHERE 和范围中进行选择

php - 由于 PCRE 限制,正则表达式导致 Apache 崩溃