【发布时间】:2021-08-20 12:56:04
【问题描述】:
我正在运行查询以连接 2 个表,然后按 2 个字段对行进行分组,并从这些组中选择具有最小 ID 的行,但出现错误。连接的表如下所示:
+--------+---------+-----------------+-----------+-----------+
| ID | CODE | NAME | VRACHAR01 | VRACHAR02 |
+--------+---------+-----------------+-----------+-----------+
| 290861 | 1110896 | PRODUCT NAME XX | 001 | 706 |
| 290864 | 1110899 | PRODUCT NAME XX | 001 | 706 |
| 290865 | 1110900 | PRODUCT NAME XX | 003 | 721 |
| 290870 | 1110905 | PRODUCT NAME XX | 004 | 743 |
| 290871 | 1110906 | PRODUCT NAME XX | 004 | 743 |
| 290878 | 1110913 | PRODUCT NAME XX | 006 | 806 |
| 290879 | 1110914 | PRODUCT NAME XX | 007 | 807 |
| 290908 | 1110943 | PRODUCT NAME XX | 008 | 815 |
+--------+---------+-----------------+-----------+-----------+
如果我运行下面的脚本按最后 2 个字段对结果进行分组,我会收到错误:
选择列表中的“A.CODE”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
SELECT
min(A.ID),
A.CODE,
A.NAME,
B.VARCHAR01,
B.VARCHAR02
FROM
PRODUCTS A
INNER JOIN
EXTRAS B
ON
A.ID = B.ID
WHERE
A.COMPANY = 1002
AND
A.TYPE = 50
GROUP BY
B.VARCHAR01,
B.VARCHAR02
感谢任何帮助。
【问题讨论】:
-
(1) 错误似乎很明显;
group by列与select列不一致。你有什么不明白? (2)你想完成什么?这还不清楚。 (3) 你用的是什么数据库?