SQL对组合查询结果排序

SQL对组合查询结果排序,SELECT语句的输出用ORDER BY子句排序。在用UNION组合查询时,只能使用一条ORDER BY子句,它必须位于最后一条SELECT语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。

下面的例子对前面UNION返回的结果进行排序:

    SELECT cust_name, cust_contact, cust_email
    FROM Customers
    WHERE cust_state IN ('IL','IN','MI')
    UNION
    SELECT cust_name, cust_contact, cust_email
    FROM Customers
    WHERE cust_name = 'Fun4All'
    ORDER BY cust_name, cust_contact;

输出结果如下:

    cust_name        cust_contact           cust_email
    -----------      -------------          -------------
    Fun4All           Denise L. Stephens    dstephens@fun4all.com
    Fun4All           Jim Jones               jjones@fun4all.com
    The Toy Store    Kim Howard             NULL
    Village Toys     John Smith             sales@villagetoys.com

这条UNION在最后一条SELECT语句后使用了ORDER BY子句。虽然ORDER BY子句似乎只是最后一条SELECT语句的组成部分,但实际上DBMS将用它来排序所有SELECT语句返回的所有结果。

说明:其他类型的UNION
某些DBMS还支持另外两种UNION:EXCEPT(有时称为MINUS)可用来检索只在第一个表中存在而在第二个表中不存在的行;而INTERSECT可用来检索两个表中都存在的行。实际上,这些UNION很少使用,因为相同的结果可利用联结得到。

提示:操作多个表
为了简单,本文的例子都是使用UNION来组合针对同一表的多个查询。实际上,UNION在需要组合多个表的数据时也很有用,即使是有不匹配列名的表,在这种情况下,可以将UNION与别名组合,检索一个结果集。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

SQL教程