我有两张表TableA
和TableB
。他们在TableA.refID = TableB.SomeID
上加入了联接,然后是其他一些列(TableA.time
,TableB.kind
)。
我想进行查询,按时间排序并按类型对其进行分组。
这是我使用的查询(为最佳展示而修改)
SELECT
*, TableA.time AS B, TableB.type AS A
FROM
TableB
INNER JOIN
TableB ON TableB.SomeID = TableA.refID
ORDER BY
B
GROUP BY
TableB.type
我得到了这个例外:
关键字“组”附近的语法不正确。
我该如何纠正?
答案 0 :(得分:3)
ORDER BY
来自GROUP BY
:
SELECT *, TableA.time AS B, TableB.type AS A
FROM TableB INNER JOIN
TableB ON TableB.SomeID = TableA.refID
GROUP BY TableB.type
ORDER BY B
正确的语法是:
SELECT..
FROM...
WHERE...
GROUP BY..
ORDER BY..
答案 1 :(得分:2)
您的查询有三个问题:
您在订购后有一个小组。您无法订购,然后将您的订单分组
您正在选择*
并进行分组,但这不会起作用。
您正在TableB.type
进行分组,但TableA.time
不是聚合,因此它需要是群组或聚合的一部分。
以下是您的程序应该是什么样子的示例:
SELECT
TableA.time AS B, TableB.type AS A
FROM
TableB
INNER JOIN
TableB ON TableB.SomeID = TableA.refID
GROUP BY
TableB.type, TableA.time
ORDER BY
TableA.time
OR
SELECT Max(TableA.time) AS B, TableB.type AS A
FROM TableB INNER JOIN
TableB ON TableB.SomeID = TableA.refID
GROUP BY TableB.type
ORDER BY Max(TableA.time)