这个是表和视图生成的代码
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
不过这样就要查好几次数据库了,有高手能用存储过程写吗?我不会写不出来
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
不过这样就要查好几次数据库了,有高手能用存储过程写吗?我不会写不出来
select product_id from mjl_view limit x-1 ,1->
select product_id from mjl_view order by product_id desc limit 1 ,1
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
这个是你设计中最大的一个问题。 无法确定最后一条记录是什么。 所以建议使用ORDER BY,既然ORDER BY了,那显然直接 order by x desc limit 1 就可以实现你的要求。
谢谢 写的存储过程,不过好像不能实现我需要,我说要实现的业务,看下能实现求高手解答,
我要实现商品在数据查询时能够每过一段时间就能实现,排在最后的商品能跑到最前面来
所以,我的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 查多次数据得到值才能实现
我想能不能用春初过程写一个,有没有会的能做吗 谢谢了