转载:jacky的个人空间 http://www.uoik.cn/?uid-2-action-viewspace-itemid-489
(1)order by
ORDER BY子句的语法为:
SELECT column1, SUM(column2) FROM "list-of-tables"
ORDER BY "column-list" [ASC | DESC];
[ ] = optional
ORDER BY是一个可选的子句,它允许你根据指定要order by的列来以上升或者下降的顺序来显示查询的结果。例如:
ASC = Ascending Order –这个是缺省的
DESC = Descending Order
下面举个例子:
SELECT employee_id, dept, name, age, salary
FROM employee_info
WHERE dept = 'Sales'
ORDER BY salary;
这条SQL语句将从employee_info表中列dept等于'Sales'选择employee_id,、dept、name、age和salary,并且根据他们的salary按升序的顺序来列出检索结果。
如果你想对多列排序的话,那么在列与列之间要加上逗号,比如:
SELECT employee_id, dept, name, age, salary
FROM employee_info
WHERE dept = 'Sales'
ORDER BY salary, age DESC;
(2)group by
一、首先讲讲GROUP BY子句语法:
SELECT column1, SUM(column2) FROM "list-of-tables"
GROUP BY "column-list";
这个GROUP
BY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。当然最好解释的方法是给出一个例子啦:
假设我们将从employee表中搜索工资最高的列,可以使用以下的SQL语句:
SELECT max(salary), dept
FROM employee
GROUP BY dept;
这条语句将在每一个单独的部门中选择工资最高的工资。结果他们的salary和dept将被返回。
二、group by从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
什么是“聚合函数”?
三、理解group by:
表1:
|
udate |
|
2006-3-2 |
flash |
|
mp3 |
2006-2-2 |
|
|
那么就要使用group by type的方式
select type from表1 group by type
但这样就无法读到udate
再来
select type,udate from表1 group by type
这种写法是错误的。
原因是type和udate不是一对一的关系。就是说一种type有几个udate
所以
selct ** group by **之后没办法组织形成新的表,不知道要取哪个udate
再来
select type,max(udate) from表1 group by type
这样就正确了。
取的是最大的udate,一对一成立。