V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coolicer
V2EX  ›  程序员

前端问个 sql,进来打救一下。

  •  
  •   coolicer · 2014-03-08 17:24:28 +08:00 · 3799 次点击
    这是一个创建于 3898 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要用sql统计一台机器的情况,现在sql查出一堆数据:

    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx

    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx
    xxx 10086 xx xx xxx xx

    xxx 10087 xx xx xxx xx
    xxx 10087 xx xx xxx xx
    xxx 10087 xx xx xxx xx
    xxx 10087 xx xx xxx xx
    xxx 10087 xx xx xxx xx
    xxx 10087 xx xx xxx xx
    xxx 10087 xx xx xxx xx

    我现在怎么根据 10086和10087这些信息分页。10086代表查出这台10086机器的所有信息,没怎么用sql,前端你懂的。现在硬头皮上。

    *现在是用order by排序后所呈现的,我想按这个id把信息分好,然后我再做统计。
    19 条回复    1970-01-01 08:00:00 +08:00
    jsonline
        1
    jsonline  
       2014-03-08 17:26:30 +08:00 via Android
    不要摸黑前端
    coolicer
        2
    coolicer  
    OP
       2014-03-08 17:27:51 +08:00
    @jsonline = =,好吧,我比较菜
    judasnow
        3
    judasnow  
       2014-03-08 17:32:56 +08:00
    select * from `your table name` where `10086那一列的属性名` = '10086[7]' limit 0, 10(页数)
    coolicer
        4
    coolicer  
    OP
       2014-03-08 17:36:07 +08:00
    @judasnow 上面的那些是我联2个表查出来的,不是直接表里的数据。
    zzNucker
        5
    zzNucker  
       2014-03-08 17:42:58 +08:00
    一样的啊,union出来的结果也可以limit的。
    coolicer
        6
    coolicer  
    OP
       2014-03-08 17:52:31 +08:00
    你们看清楚问题,上面的结果是2张表中查出来的。

    我现在的问题是,比如10086有20条,10087只有10条。我每页只显示一个机器,我怎么根据10086,10087分页。

    我很有诚意,不要骂我。
    kingme
        7
    kingme  
       2014-03-08 17:54:27 +08:00
    才刚刚接触SQL,有心无力
    coolicer
        8
    coolicer  
    OP
       2014-03-08 17:55:30 +08:00
    @kingme 我也差不多。读书时只学过点语法,现在就要实干。
    jsonline
        9
    jsonline  
       2014-03-08 18:09:56 +08:00 via Android
    把group 和 orderby 结合
    jsonline
        10
    jsonline  
       2014-03-08 18:11:22 +08:00 via Android
    其实没看懂你的需求是什么,你举个栗子吧
    zzNucker
        11
    zzNucker  
       2014-03-08 18:12:02 +08:00
    说实话我觉得你真的没表达清楚意思,你数据都取出来了,要怎么分页不是你前端的事情吗。。。 或者说你要的是把10086和10087的数据分开来,那你后端用关联数组分一下不就行了?
    jsonline
        12
    jsonline  
       2014-03-08 18:14:52 +08:00 via Android
    @zzNucker 同感。
    sobigfish
        13
    sobigfish  
       2014-03-08 19:10:55 +08:00
    就是数据源里有10087,你前端不会用js把10087分页?
    jimmyrui
        14
    jimmyrui  
       2014-03-08 21:59:48 +08:00
    小白路过。。。
    select x 1 ,‘ ’ 2 from xxx where x<10086
    union all
    select '' 1,x 2 from xxx where x>10087
    jimmyrui
        15
    jimmyrui  
       2014-03-08 22:20:14 +08:00
    貌似不对,小白在路过
    select a.a,b.b
    from
    (select x a,' ' b from xxx where x<10086) a,
    (select ' ' a,x b from xxx where x>10087) b
    zhenglee
        16
    zhenglee  
       2014-03-08 23:00:42 +08:00 via iPhone
    先说表结构 再说需求
    mcfog
        17
    mcfog  
       2014-03-09 17:00:46 +08:00
    线上有写入的db上直接联表查询是很危险的

    如果是统计需求的话,最好是定时有脚本吧数据dump到另外的db机器,那么这个dump的过程可以把数据按照统计的要求处理好。

    回到问题,联表无论是join还是别的什么方式都是可以加条件的,手册里很容易找到,时髦一点的还可以用视图之类的机制
    niseter
        18
    niseter  
       2014-03-09 21:56:20 +08:00
    @coolicer 那就之前建一个表 ,CREATE table tmp as SELECT........,然后拿创建出来的tmp表分页就容易多了,
    dong3580
        19
    dong3580  
       2014-03-10 14:21:07 +08:00
    把group 和 orderby 结合 懒得给你写了,w3school怎么样,看看吧.
    最好不要联合查询,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1306 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:53 · PVG 01:53 · LAX 09:53 · JFK 12:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.