这个是表和视图生成的代码
DROP TABLE IF EXISTS `mjl_product`;
CREATE TABLE `mjl_product` (
  `product_id` int(11) NOT NULL auto_increment COMMENT '产品id',
  `product_name` varchar(50) NOT NULL default '' COMMENT '产品名称',
  `product_type` int(11) NOT NULL default '0' COMMENT '产品类型',
  `product_price` float default '0' COMMENT '产品价格',
  `product_img` varchar(50) character set gb2312 NOT NULL default '' COMMENT '产品图片',
  `product_text` varchar(255) character set gb2312 default '' COMMENT '详细介绍',
  PRIMARY KEY (`product_id`)
)  create VIEW mjl_view
as
SELECT * FROM mjl_product----------------分割----------------
select product_id from mjl_view limit x-1 ,1x我准备用java 查询出来是总条数,这样就可以取最后一条数据,
然后查出来的id 就是下面的Y
aa是一张临时表
CREATE TEMPORARY TABLE aa
select * from mjl_view
改变视图的时候把视图数据每次导入临时表
这样就可以实现
alter view mjl_view
as
select * from mjl_product m where m.product_id=y
union
SELECT * FROM aa
不过这样就要查好几次数据库了,有高手能用存储过程写吗?我不会写不出来 

解决方案 »

  1.   

    如果是以product_id来排序的
    select product_id from mjl_view limit x-1 ,1->
    select product_id from mjl_view order by product_id desc limit 1 ,1
      

  2.   

    create procedure sp_test(x int)
    begin
    set @sql=concat('select A. from mjl_product A,mjl_view B where A.product_id=B.product_id order by A.product_id desc limit ',x,'-1 ,1
    union
    SELECT * FROM aa;')
    prepare stmt from @sql;
    execute stmt;
    end
      

  3.   

    如果你使用 order by 则系统并不保证输出的顺序是你插入时的顺序。
    这个是你设计中最大的一个问题。 无法确定最后一条记录是什么。 所以建议使用ORDER BY,既然ORDER BY了,那显然直接 order by x desc limit 1 就可以实现你的要求。
      

  4.   


    谢谢 写的存储过程,不过好像不能实现我需要,我说要实现的业务,看下能实现求高手解答,
    我要实现商品在数据查询时能够每过一段时间就能实现,排在最后的商品能跑到最前面来
    所以,我的mysql实现思路是这样,看下靠谱不,
    首先我先select count(*)from mjl_view 取得视图的总条数
    然后,我用
    select product_id from mjl_view limit x-1 ,1
    x 就是最后的行数,就能取得最后的一行id,
    然后我把视图的数据复制到一张表
    CREATE  TABLE aa
    select * from mjl_view
    之后我把视图修改
    这样就可以实现视图的最后一条数据跑到了第一行了
    alter view mjl_view
    as
    select * from mjl_product m where m.product_id=y
    union
    SELECT * FROM aa
    只要我每次这样修改视图,以后别人查数据的话,数据的位置就发生了改变了
    本来
    123 下次 312 再下次231
    这样循环下去
    但是这样我只会用java 查多次数据得到值才能实现
    我想能不能用春初过程写一个,有没有会的能做吗 谢谢了