多个列上的SELECT COUNT(DISTINCT')错误?
技术问答
250 人阅读
|
0 人回复
|
2023-09-14
|
我有一个表VehicleModelYear,其中包含列ID,年份,品牌和型号。" \8 H) u( e* b! Q M# A9 r, b
以下两个查询按预期工作:
! ~2 U0 H$ q6 C! h! \) _9 CSELECT DISTINCT make, model, B) j( X4 |2 X3 A4 o
FROM VehicleModelYear( @/ f3 k+ T/ i* h2 o2 y& O6 W
SELECT COUNT(DISTINCT make)5 P9 m3 t1 \) u3 V
FROM VehicleModelYear- S/ T1 Q7 L! {$ q5 X2 ]6 Q
但是,此查询不起作用
8 \- Z2 N* L3 XSELECT COUNT(DISTINCT make, model) P8 H3 E5 F: h% ]5 S( H) ~6 b
FROM VehicleModelYear
3 t% j p' @) v5 O显然答案是第一个查询返回的结果数,但只是想知道此语法有什么问题或为什么它不起作用。( X8 u: \/ A' N3 i
' K/ S7 z; ^4 x0 g/ | B解决方案:6 S7 G. a. k: k4 L' k& g
( V; s) @+ \# J# l! H& K& y
) S6 ^" S5 s* g' _+ `' E- d
* f% V2 s1 |% I( |, b2 c6 g I COUNT()中SQL Server接受以下语法/ N6 v7 x# V% h, O& K. u2 O
COUNT(*)( R, z- t: F/ j! B% V) F
COUNT(colName)# u U4 D/ J" \, C: M# a
COUNT(DISTINCT colName)
' h' K9 w' d* F! f v/ H7 j& R你可以有一个子查询,返回一套独特的make,并model可以与计数。
, N' B& L# {2 tSELECT COUNT(*)& G6 Z* Q' j/ }+ Q2 i
FROM3 ~* ?8 _6 J7 W( d) y" R( p! J
(6 l4 C Y7 M5 w- @8 c% h! x
SELECT DISTINCT make, model- j9 Q+ q& U% k# X
FROM VehicleModelYear Q* x& f* @2 T' p
) a, W5 Q6 }: V0 l5 a4 q9 y& l
最后的“ a”不是错字。这是一个别名,没有该别名,SQL将给出错误ERROR 1248 (42000): Every derived table must, X9 |( S, e9 C: M% k
have its own alias。 |
|
|
|
|
|