日期:2014-05-16  浏览次数:20819 次

菜鸟学mysql语句小结2
练习用的表如下:
[img]

[/img]



(11) Group By
我们现在回到函数上。记得我们用SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为: SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1"
当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就需要用到 GROUP BY 这个指令。在这个情况下,我们需要确定我们有 GROUP BY 所有其他的栏位。换句话说,除了有包括函数的栏位外,我们都需要将其放在 GROUP BY 的子句中。
[img]

[/img]



(12) HAVING
那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过$1,500。在这个情况下,我们不能使用WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个HAVING 的指令,而我们就可以用这个指令来达到这个目标。HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含GROUP BY 子句。HAVING 的语法如下: SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件) 请读者注意: GROUP BY 子句并不是一定需要的。
[img]

[/img]
[img]

[/img]



(13) ALIAS
接下来,我们讨论alias (别名) 在 SQL 上的用处。最常用到的别名有两种: 栏位别名及表格别名。简单地来说,栏位别名的目的是为了让 SQL 产生的结果易读。在之前的例子中, 每当我们有营业额总合时,栏位名都是 SUM(sales)。虽然在这个情况下没有什么问题,可是如果这个栏位不是一个简单的总合,而是一个复杂的计算,那栏位名就没有这么易懂了。若我们用栏位别名的话,就可以确认结果中的栏位名是简单易懂的。第二种别名是表格别名。要给一个表格取一个别名,只要在 FROM 子句中的表格名后空一格,然后再列出要用的表格别名就可以了。这在我们要用 SQL 由数个不同的表格中获取资料时是很方便的。这一点我们在之后谈到连接 (join) 时会看到。我们先来看一下栏位别名和表格别名的语法: SELECT "表格别名"."栏位1" "栏位别名" FROM "表格名" "表格别名" 基本上,这两种别名都是放在它们要替代的物件后面,而它们中间由一个空白分开
[img]

[/img]