回答

收藏

如何在T-SQL中通过联合使用分组

技术问答 技术问答 148 人阅读 | 0 人回复 | 2023-09-13

如何在t-sql中结合使用group' c& A1 b( T1 {/ E
by?我想按联合结果的第一列进行分组,我编写了以下sql,但它不起作用。我只是不知道如何引用联合结果的指定列(在这种情况下为1)。太谢谢了。
- L4 D, G) J, M8 U& ?% p8 {SELECT  *
3 J1 c7 z! d0 D7 T* ZFROM    ( SELECT    a.id ,- p, u  H& j( }8 o9 v4 u
                    a.time
+ Z% f3 b& ?- K, ?0 g. H; G          FROM      dbo.a
- e3 Y% w7 o2 s          UNION/ W0 y3 q7 ^' _
          SELECT    b.id ,
+ V) P* a7 v: l                    b.time+ x9 @+ [' t- }/ i2 i4 N- c$ y4 S
          FROM      dbo.b/ }# [. C% U$ e2 h
        )8 f& m& S2 F$ v2 b: Q) m2 b
GROUP BY 1$ E% K0 X) f- S7 V
                % Z% s9 O1 y+ |& r  z% m; ?
解决方案:
3 W. @' F+ V" s$ c) a9 |               
4 V1 |* ]! n% e  \9 C* u0 q+ M: P" O' l2 D/ c3 ^  m
- Q' R4 B# U  q* @0 {2 b) u
                ' N7 t+ u5 n) j% d& s! R
分组1/ b/ t+ K/ G: G- E

- [- X8 y" ]1 u. I, P: c我从不知道GROUP BY支持使用序数,只有ORDER BY。无论哪种方式,只有MySQL支持GROUP
4 b; D, R5 j2 {2 b( G" P3 T4 o- TBY,而不包括没有对它们执行聚合功能的所有列。不建议使用常规,因为常规基于SELECT的顺序-如果更改,则ORDER BY(如果支持,也可以GROUP
. A: I' M1 H3 K& H1 ]6 F& GGROUP)也是如此。1 Z" O8 X# I7 g) A' M
GROUP BY使用时无需在内容上运行UNION-UNION确保删除重复项;UNION ALL速度更快,因为它不需要-
  C! S0 [4 r: e2 k$ P! N* [5 s) [在这种情况下,您将需要GROUP BY …( [% z5 `( U0 R. b6 P6 K  U
您的查询只需要是:) {% `: R' ~) }0 d
SELECT a.id,
' @7 }8 ]2 X; N7 n+ b& n       a.time
, j% X- L: f2 ?9 n) f, x5 \9 w  FROM dbo.TABLE_A a# k# O0 L1 N4 F; _% n
UNION
0 a" U' `% I4 w, H8 j/ U; Q  |SELECT b.id,7 y6 l- w& `3 I
       b.time6 o' M# ~$ v: ^6 u0 x4 b$ f) r
  FROM dbo.TABLE_B b
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则