recomman警告英文:急问SQL语句()

来源:百度文库 编辑:高考问答 时间:2024/04/27 15:41:56
table中有field1, field2,都是字符串。field1有的记录时空的

现在希望,将所有field1不空的排在前面,但是按field2排序;field1空的排在后面,也
按照field2排序。如何写sql语句实现?

btw:我试验了两种方法都不行:
1. SELECT *, field1 = '' AS isField1Empty FROM table ORDER BY isField1Empty,
field2. 此时报错,说isField1Empty是不存在的。

2. (SELECT * FROM table WHERE field1='' ORDER BY field2) UNION (SELECT *
FROM table WHERE field1<>'' ORDER BY field2)
此时查询结果中会把所有的结果混到一起而不是把后一个查询续到前一个查询上。
首先感谢已有的三个答案!
一楼的:连接是JOIN。UNION是把两个查询合并。
二楼的:你的方法不能满足我的要求,因为在field1不为空的字段上他会优先按照field1排序,而我要求按照field2排序。
三楼的:你根本没看我的要求是什么!

你要先搞清楚,UNION的用法,它是指结果联结,而不是查询语句!!

兄弟你好好看看UNION的用法再说哈:

" 联合查询 "
UNION运算可以把多个查询的结果合并到一个结果集里显示.
UNION运算的一般语法:
[表]查询1 UNION [ALL]查询2 UNION …
例:返回巴西所有供给商和客户的名字和城市
SELECT CompanyName,City
FROM Suppliers
WHERE Country = ‘Brazil’
UNION
SELECT CompanyName,City
FROM Customers
WHERE Country = ‘Brazil’
注:
缺省的情况下,UNION子句不返回重复的记录.如果想显示所有记录,可以加ALL选项
UNION运算要求查询具有相同数目的字段.但是,字段数据类型不必相同.
每一个查询参数中可以使用GROUP BY 子句 或 HAVING 子句进行分组.要想以指定的顺序来显示返回的数据,可以在最后一个查询的尾部使用OREER BY子句.

为空的,让他等于NULL就行了

SELECT *, field1 = '' AS isField1Empty FROM table ORDER BY field1, field2.
这样试试