按mysql中的查询行为分组

时间:2015-04-23 08:05:15

标签: mysql group-by

mysql中的表包含以下记录:

    +----------+----------+-----------+---------+-------+

    | PersonID | LastName | FirstName | Address | City  |

    +----------+----------+-----------+---------+-------+

    |        1 | Kumar    | Amit      | Sec-22  | Noida |

    |        2 | Kapoor   | X         | Sec-24  | Noida |

    |        3 | Kapoor   | Y         | Sec-22  | Delhi |

    |        4 | Kapoor   | Z         | Sec-25  | Delhi |

    |        5 | Kapoor   | W         | Sec-25  | Gzb   |

    +----------+----------+-----------+---------+-------+

当我运行以下查询时:

    select City, FirstName from Persons group by City;

以下是显示的结果:

+-------+-----------+
| City  | FirstName |
+-------+-----------+
| Delhi | Y         |
| Gzb   | W         |
| Noida | Amit      |
+-------+-----------+

我不明白为什么每个城市的所有firstNames都没有显示在表格中,因为每个Noida和德里都有2条记录,Gzb有1条记录

请帮助我理解这种行为。

4 个答案:

答案 0 :(得分:0)

MYSQL中分组,返回第一行条目,并根据具有过滤器分组的列对其余条目进行分组。

在你的情况下,德里有Y和Z,它分成1排但是会显示Y,因为那是第一排。我不确定MS-SQL,我认为其工作原理与分组工作方式相同MYSQL

答案 1 :(得分:0)

分组显示您的第一个条目。

进行此查询:

<Style TargetType="DataGridCell">
  <Style.Triggers>
    <MultiTrigger>
      <MultiTrigger.Conditions>
    <Condition Property="IsReadOnly" Value="False" />
    <Condition Property="IsMouseOver" Value="True" />
      </MultiTrigger.Conditions>
      <Setter Property="IsEditing" Value="True" />
    </MultiTrigger>
  </Style.Triggers>
</Style>

您将按分组计算。我认为查询:

select count(*) from Persons group by City;

对你想要的东西更有用。

答案 2 :(得分:0)

@Amitsh

通常,Group By与聚合函数一起使用(聚合数据)。

假设FirstName是一个“字符”字段,因此解释器默认情况下将FirstName列为FIRST()值。

您可以获得预期的输出,如果假设,每个人都有一个工资列,并且您希望显示城市中获得的工资。 (只是一个例子)

您可以参考以下链接来了解Group By的应用。

如果您告诉我们您对此查询的期望,我们会帮助您。

参考:

http://www.w3schools.com/sql/sql_groupby.asp

http://www.tutorialspoint.com/sql/sql-group-by.htm

答案 3 :(得分:0)

当您执行GetModuleHandle(NULL)并尝试在同一查询中选择其他一些列时,mysql不保证将从所有列中选择哪个值,它将随机选取一个数据。

在您的情况下,查询是

HMODULE

因此,当您执行group by

时,它将为该城市选择select City, FirstName from Persons group by City; 和任意City

对于诸如sum,count等聚合函数,Firstname以上的内容更为可取。

然而,您可以修改查询以使用group by City函数将所有名字作为逗号分隔的字符串获取

group by