求助::
一张表有三个字段, 分别为Id(Primary key), number(库存数量) amount(总金额),一般情况下, number的值变化不会太大的, 上下浮动不超过2, 但是有几天这个number的变化特别大 要求查询出这几条数据, 怎么下手?

解决方案 »

  1.   

    select * from 表 order by number desc
    最大的number就显示在前面了
      

  2.   

    number的值变化不会太大的?
    number值的变化是通过update来控制还是直接插入的
      

  3.   

    补充建表语句及测试数据。
    CREATE TABLE `testtable` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `number` int(11) NOT NULL,
      `amount` float NOT NULL,
      PRIMARY KEY (`id`)
    )INSERT INTO `testtable` VALUES ('1', '10', '1000');
    INSERT INTO `testtable` VALUES ('2', '11', '12000');
    INSERT INTO `testtable` VALUES ('3', '9', '9000');
    INSERT INTO `testtable` VALUES ('4', '12', '13000');
    INSERT INTO `testtable` VALUES ('5', '13', '12444');
    INSERT INTO `testtable` VALUES ('6', '2', '12000');
    INSERT INTO `testtable` VALUES ('7', '100', '1231238');
      

  4.   

    select a.id, a.numb from testtable a, testtable b
    where abs(a.number- b.number) > 10 --是你认为浮动多大算大的一个数,这里认为相差10算浮动大
      and a.id = b.id - 1
    union
    select b.id, b.numberfrom testtable a, testtable b
    where abs(a.number- b.number) > 10
      and a.id = b.id - 1
      

  5.   

    with T as
    (
    select 1 ID, 2 NC from dual union all
    select 1 ID, 9 NC from dual union all
    select 1 ID, 7 NC from dual union all
    select 1 ID, 13 NC from dual union all
    select 1 ID, 8 NC from dual union all
    select 1 ID, 5 NC from dual union all
    select 1 ID, 3 NC from dual union all
    select 1 ID, 12 NC from dual union all
    select 1 ID, 10 NC from dual union all
    select 1 ID, 11 NC from dual 
    )
    select * from T,(select avg(nc) AVG_ALL from T) A where ABS(nc - A.AVG_ALL) > 2;
      

  6.   

    select * from testTable where rownum<10 order by number desc