0

我有一个名为attproduct

有三列id, attribute, values

我有color和列brand中的每个id和列attribute中的相应值value

SELECT id, MAX( IF( attribute =  'brand', value, NULL ) ) AS Brand,
       MAX( IF( attribute =  'color', value, NULL ) ) AS color
FROM fy.attproduct
GROUP BY id

当我运行此查询时,我会在id, brand, color列中获得所需的输出。

我需要知道 max 在我的查询中的作用是什么,当我删除 max 时,我得到空值

4

2 回答 2

0

group by id会将 attproduct 中与给定 id 关联的所有行滚动到一个结果行中。如果您没有指定像 min 或 max 这样的聚合器,则会从源行中选择一个随机值作为结果(可能是第一个找到的)。

于 2013-03-12T06:50:47.027 回答
0

MAX()正在组合与每个 id 关联的值。

SELECT id, IF( attribute =  'brand', value, NULL ) AS Brand, IF( attribute =  'color', value, NULL ) AS color
FROM fy.attproduct

没有GROUP BY应该返回的行

ID  Brand      color
1   'mybrand'  NULL
1   NULL       'mycolor'

不使用MAX()时,只会选择其中一行,因此至少有一列是NULL.

于 2013-03-12T06:52:02.683 回答