关于mysql怎么取表或者视图最后一条数据,不能使用ID

投影 2012-03-29 08:59:34
不使用ID,怎么取mysql表或者视图最后一条数据
...全文
239 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
投影 2012-03-31
  • 打赏
  • 举报
回复
那个 用java代码配合sql可以实现了,就是想拜托能否有能能写一个存储过程,不怎么会写,写不出来中
就下面的代码
create VIEW mjl_view
as
SELECT * FROM mjl_product

select product_id from mjl_view limit x,1

--x我准备用java 查询出来是总条数,这样就可以取最后一条数据,
--然后查出来的id 就是下面的Y
--这样就可以实现

alter view mjl_view
as
select * from mjl_product m where m.product_id=yunion
SELECT * FROM bb

--aa是一张临时表
--创建临时表
CREATE TEMPORARY TABLE cc
select * from mjl_view

drop table bb

create TABLE bb
select * from cc
--改变视图的时候把视图数据每次导入临时表

select * from mjl_view

试了,每次改变没问题,如果能有个存储过程就好了
投影 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
哦,同一个问题。
SELECT * FROM mjl_product 你认为显示在最后一条的记录是什么? 逻辑上的含义是什么? 最后一条插入的记录?
[/Quote]
这么打个比喻吧 例如
表数据id排列
123
改变就变成了
312
再改变就变成了
231
如果有新的记录
2314
改变就变成了
4231

Rotel-刘志东 2012-03-30
  • 打赏
  • 举报
回复
select * from tb order by col desc limit 1;
投影 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
oracle 中有类似的语句? 你是如何在ORACLE中实现的?
[/Quote]
我想的是每次取视图的最后一条,再去源数据,进行UNION,这样新视图就改变了,无奈啊,mysql不好取啊
投影 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
orcale 是有rownum的,查出来的数据后面都自带一个第几列的,取ronum最大就可以
[/Quote]
说错了,第几行,老说错这个
投影 2012-03-30
  • 打赏
  • 举报
回复
orcale 是有rownum的,查出来的数据后面都自带一个第几列的,取ronum最大就可以
ACMAIN_CHM 2012-03-30
  • 打赏
  • 举报
回复
oracle 中有类似的语句? 你是如何在ORACLE中实现的?
投影 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:

不能使用ID额,就这个头痛了,不能像oracle或者sql那样

请问为什么不适用id 你是什么样子的需求呢 如果有时间 也可以按时间排序
[/Quote]


主要是这样的,页面展示商品的数据,要求过一定时间,商品查出来的数据发生了改变
比如
1 苹果
2 橘子
3 香蕉
改变1:
3 香蕉
1 苹果
2 橘子
改变2:
2 橘子
3 香蕉
1 苹果
数据时比较大的,所以改变表数据的排列不行啊,想用视图,取最后的一行麻烦啊
ACMAIN_CHM 2012-03-30
  • 打赏
  • 举报
回复
哦,同一个问题。
SELECT * FROM mjl_product 你认为显示在最后一条的记录是什么? 逻辑上的含义是什么? 最后一条插入的记录?
投影 2012-03-30
  • 打赏
  • 举报
回复
这个是表和视图生成的代码
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 ,1

x我准备用java 查询出来是总条数,这样就可以取最后一条数据,
然后查出来的id 就是下面的Y
这样就可以实现

alter view mjl_view
as
select * from mjl_product m where m.product_id=y
union
SELECT * FROM aa

aa是一张临时表
CREATE TEMPORARY TABLE aa
select * from mjl_view
改变视图的时候把视图数据每次导入临时表

不过这样就要查好几次数据库了,有高手能用存储过程写吗?我不会写不出来
投影 2012-03-30
  • 打赏
  • 举报
回复
看来只能在改变的视图的时候,先查一遍视图总共有多少条,再limit 估计就可以了
投影 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
select * from tb order by col desc limit 1;
[/Quote]
要是能直接取最后一列就好了,limit还要指定按什么排列,排列的id本身就是要变的,别的也不行,我要做一个定时器,每次都改变视图额,难办
rucypli 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

不能使用ID额,就这个头痛了,不能像oracle或者sql那样
[/Quote]
请问为什么不适用id 你是什么样子的需求呢 如果有时间 也可以按时间排序
投影 2012-03-29
  • 打赏
  • 举报
回复
不能使用ID额,就这个头痛了,不能像oracle或者sql那样
ACMAIN_CHM 2012-03-29
  • 打赏
  • 举报
回复
select * from table1 order by col desc limit 1

56,685

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧