SELECT 
        * 
FROM 
        ( 
        SELECT 
                SCORE , 
                ROWNUM AS LINENUM , 
                PHONE 
        FROM 
                ( 
                SELECT 
                        SCORE , 
                        PHONE 
                FROM 
                        COM_NFXD_MZUSER 
                ORDER BY 
                        SCORE 
                        DESC ) ) 
WHERE 
        PHONE='02162090953'
 对以SQL 语句进行优化下面是表结构-- Create table
create table COM_NFXD_EYE_MZUSER
(
  PHONE     VARCHAR2(21) not null,
  CELL      VARCHAR2(21),
  DONE      VARCHAR2(100),
  SCORE     NUMBER(10) default (0) not null,
  ISZJ      NUMBER(1) default (0),
  GATENUM   NUMBER(19) default (0)               --此用户本日的闯关次数,
  INPUTTIME DATE default (sysdate)
)
tablespace IVR_DATA
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table COM_NFXD_EYE_MZUSER
  add primary key (PHONE)
  using index 
  tablespace IVR_DATA
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

解决方案 »

  1.   

    SELECT 
                    SCORE , 
                    ROWNUM AS LINENUM , 
                    PHONE 
            FROM 
                    ( 
                    SELECT 
                            SCORE , 
                            PHONE 
                    FROM 
                            COM_NFXD_MZUSER
                     WHERE  PHONE='02162090953'
                    ORDER BY 
                            SCORE 
                            DESC )
      

  2.   

    SELECT 
        SCORE,
        LINENUM,
        PHONE
    FROM
        (
        SELECT
            SCORE,
            ROWNUM AS LINENUM,
            PHONE
        FROM
            COM_NFXD_MZUSER
        ORDER BY
            SCORE
            DESC
        )
    WHERE PHONE='02162090953'
      

  3.   

    上面2为大哥 你门写的SQL 结果抽出来的和我的结果不一样的
    SASACAT你的SQL 是很快可是LINENUM 总是一FENG2 你的LINENUM和我要的结果也不一样不过还是要谢谢2位了
      

  4.   

    LINENUM使用来干什么用,他只代表只用一条符合条件的记录
      

  5.   

    SELECT 
        SCORE,
        ROWNUM AS LINENUM,
        PHONE
    FROM
        (
        SELECT
            SCORE,
            PHONE
        FROM
            COM_NFXD_MZUSER
        ORDER BY
            SCORE
            DESC
        )
    WHERE PHONE='02162090953';
      

  6.   

    昨天没有测试就贴上来了,sorry
    这次我自己先做了测试,呵呵。