要实现的功能是查看当前图片的前5张和后5张图。我想到的是使用联合查询,但查出来的顺序不对没有按照id从小到大的顺序来显示,我写的语句如下:
SELECT     TOP (5) *
FROM         photo
WHERE     (id < 301209) AND (name = '123')
UNION
SELECT     TOP (5) *
FROM         photo AS photo_1
WHERE     (id > 301209) AND (name = '123')
order by id desc这样查出来的结果只是前5张对的,后5张的结果却是错的。

解决方案 »

  1.   

    在外面嵌套一下:
    select
      *
    from
    (SELECT    TOP (5) * 
    FROM        photo 
    WHERE    (id < 301209) AND (name = '123') 
    UNION 
    SELECT    TOP (5) * 
    FROM        photo AS photo_1 
    WHERE    (id > 301209) AND (name = '123'))t 
    order by id desc 
      

  2.   

    select * from (
    SELECT     top(5)  *
    FROM         photo
    WHERE     (id < 301209) AND (Species_name = '123')
    order by id desc
    union
    SELECT     TOP (5) *
    FROM         photo AS photo_1
    WHERE     (id > 301209) AND (Species_name = '123')order by id
    ) t
    order by id
    我又修改了一下,可以了,谢谢