是否可以使用SQL进行简单的GROUP BY查询,而不使用COUNT,AVG或SUM?我想显示所有列并将其分组为一个列。
SELECT * FROM [SPC].[dbo].[BoardSFC] GROUP BY boardsn
上面的查询在Mysql上有效,但在SQL上无效,是否有办法实现?任何建议都会很棒
答案 0 :(得分:1)
我想您只是以不同于在sql server中实现的方式理解“组数据”。您只希望结果中具有相同值的行将排序而不是分组。所以也许您需要的是:
SELECT *
FROM [SPC].[dbo].[BoardSFC]
WHERE imulti = 1
ORDER BY boardsn
答案 1 :(得分:0)
上面的查询在Mysql上有效,但在SQL上无效,是否有办法实现?任何建议都会很棒
不,没有。 MySQL只允许您这样做,因为它严重违反了各种SQL标准。
每当您使用GROUP BY
时,都需要为结果集中的每个列命名。 SELECT *
功能仅在以交互方式处理数据时提供了便利-在生产代码中,您切勿使用SELECT *
。
答案 2 :(得分:0)
您可以将TOP 1 WITH TIES与ORDER BY ROW_NUMBER结合使用。
SELECT TOP 1 WITH TIES *
FROM [SPC].[dbo].[BoardSFC]
ORDER BY ROW_NUMBER() OVER (PARTITION BY boardsn ORDER BY imulti)
或更明确地说,在子查询中使用ROW_NUMBER
SELECT *
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY boardsn ORDER BY imulti) as RN
FROM [SPC].[dbo].[BoardSFC]
) q
where RN = 1