【发布时间】:2018-09-18 14:31:37
【问题描述】:
尝试在“GROUP BY”中获取“ORDER BY id DESC”以仅获取最后一条评论。 当我将“IN”与 >1 个元素一起使用时,它可以正常工作,但只有一个元素或没有“IN”。 我的 MariaDB 版本是 10.0.36-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04。
这里是示例:56xxx - true ids,55xxx false ids
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid`='6576') GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 55811 |
+-------+
1 row in set (0.00 sec)
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid` IN ('6576')) GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 55811 |
+-------+
1 row in set (0.00 sec)
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid` IN ('6576','6576')) GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 56218 |
+-------+
1 row in set (0.00 sec)
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid` IN ('6576','-1')) GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 56218 |
+-------+
1 row in set (0.01 sec)
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid` IN ('6576')) GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 55811 |
+-------+
1 row in set (0.00 sec)
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid` IN ('6576','6577')) GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 56199 |
| 56218 |
+-------+
2 rows in set (0.00 sec)
MariaDB [shop]> SELECT `commentsapi_comment`.`id` FROM `commentsapi_comment`
WHERE (`commentsapi_comment`.`orderid` IN ('6577')) GROUP BY orderid DESC;
+-------+
| id |
+-------+
| 55813 |
+-------+
1 row in set (0.01 sec)
谁知道这是为什么?
【问题讨论】:
-
GROUP BY DESC对我来说毫无意义。 Group by 用于聚合,聚合的顺序通常不相关。 -
“GROUP BY DESC 对我来说毫无意义。Group by 用于聚合,聚合的顺序通常不相关。” @apokryfos MySQL 支持
GROUP BY DESC,但在较新的 MySQL 版本(5.7+)中已弃用 .. 还有较旧的 MySQL 版本(5.7 或更低)自动排序GROUP BY <group>就像您使用GROUP BY <group> ORDER BY <group> ASC.. -
我看到无效的 ANSI GROUP BY SQL 查询。您在 SELECT 中使用的列不在 GROUP BY 中
-
@Raymond Nijland 我需要按 id col 排序并按 orderid col 分组,选择带 * 会给出一些结果,因为没有
-
SELECT MAX(id) FROM commentsapi_comment ... GROUP BY orderid;怎么样?
标签: mysql mariadb greatest-n-per-group