我有一个名为attproduct的表
有三列id, attribute, values。
我在attribute列中为每个id设置了color和brand,在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 as columns中得到了所需的输出。
我需要知道max在我的查询中的角色是什么,当我删除max时,我得到的值是空值
发布于 2013-03-12 14:52:03
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-12 14:50:47
group by id将attproduct中与给定id相关联的所有行滚动到一个结果行中。如果不指定像min或max这样的聚合器,则会从源行中选择一个随机值作为结果(很可能是第一个找到的值)。
https://stackoverflow.com/questions/15354963
复制相似问题