如何在t-sql中使用group with with union?我想通过联合的结果的第一列进行分组,我写了以下sql,但它不起作用.我只是不知道如何引用指定的列(在这种情况下是1)的联合结果.
万分感谢.
万分感谢.
SELECT * FROM ( SELECT a.id,a.time FROM dbo.a UNION SELECT b.id,b.time FROM dbo.b ) GROUP BY 1
解决方法
GROUP BY 1
我从来没有认识到GROUP BY支持使用ordinals,只有ORDER BY.无论哪种方式,只有MysqL支持GROUP BY不包括所有列,而不对其执行聚合功能. Ordinals不是推荐的做法,因为如果它们基于SELECT的顺序 – 如果更改,您的ORDER BY(或GROUP BY,如果支持)也是如此.
使用UNION时,不需要在内容上运行GROUP BY – UNION确保重复的内容被删除; UNION ALL更快,因为它不 – 在这种情况下,您将需要GROUP BY …
您的查询只需要:
SELECT a.id,a.time FROM dbo.TABLE_A a UNION SELECT b.id,b.time FROM dbo.TABLE_B b