我想实现www.qq.com中的“科技 数码”的效果,请教一下算法。
就是新闻中,有带图片的,就显示在第一行,其他的顺序片下排列。请教一下这个SQL语名怎么写,或者设计思路表结构是这样的:id,title,content,postTime,smallImage如果文章没有图,smallImage存储值为为空串

解决方案 »

  1.   

    数据库倒序, 所有新闻都用div做小模块,随意拼接即可
      

  2.   

    分开来查询,需要带图片的就查询带图片的新闻,不需要的就查不需要的,不一定要用一条sql来做
      

  3.   

    用一条的话就
    select top 1 * from news where (带图片的)
    union all
    select top 10 * from news where (不带图片的)
      

  4.   

    如果我在第二条语句加上一条order by id desc,就麻烦了,不带图片的那句SQL不能取最新的数据了。
    比如,带图的id为1,不带图的为大于1,即以后新增的数据,自动按升序排列了。
      

  5.   


    理论上应该不会出现这种情况的,按照你说的目测是sqlserver把整个数据拿来order by id desc了
    你把不带图片的那条sql用括号括起来试试:
    select top 1 * from news where (带图片的)
     union all
     (select top 10 * from news where (不带图片的)order by id desc )
      

  6.   


    你原来有个汽修软件是吗?我有兴趣联系我QQ1511129848有,不过是用VB6写的
      

  7.   


    理论上应该不会出现这种情况的,按照你说的目测是sqlserver把整个数据拿来order by id desc了
    你把不带图片的那条sql用括号括起来试试:
    select top 1 * from news where (带图片的)
     union all
     (select top 10 * from news where (不带图片的)order by id desc )这样会提示:关键字 'order' 附近有语法错误。
      

  8.   

    我用的是sql2008,如果加order by id desc,确实把整个结果重新排序了。
    所以无法判断第一条数据就是带图片的
      

  9.   


    理论上应该不会出现这种情况的,按照你说的目测是sqlserver把整个数据拿来order by id desc了
    你把不带图片的那条sql用括号括起来试试:
    select top 1 * from news where (带图片的)
     union all
     (select top 10 * from news where (不带图片的)order by id desc )这样会提示:关键字 'order' 附近有语法错误。
    那个是用mysql测试的,没有问题,sqlserver没有本地环境测试,试试使用临时表的方式:
    like this:
    SELECT * FROM newstype WHERE typeid=111
    UNION ALL
    SELECT * FROM(SELECT * FROM newstype WHERE typeid>200 AND typeid<210 ORDER BY typeid DESC)b
      

  10.   


    你原来有个汽修软件是吗?我有兴趣联系我QQ1511129848有,不过是用VB6写的高手啊,是否可以看一下系统