只显示同一品牌今天最后一条数据,和前一天最后一条数据,将他们在一行中显示。

细嗅蔷薇 2013-03-18 06:55:56
表结构:
create table test
(
id int(10) auto_increment not null primary key ,
brandid int(10),
n varchar(50),
datetime datetime
)
数据:
insert into test values(1,'第一个品牌14日第一条','2013-03-14 14:14:14')
insert into test values(1,'第一个品牌14日第二条','2013-03-14 15:14:14')
insert into test values(1,'第一个品牌15日第一条','2013-03-15 11:14:14')
insert into test values(1,'第一个品牌15日第二条','2013-03-15 12:14:14')

insert into test values(2,'第二个品牌14日第一条','2013-03-14 14:14:14')
insert into test values(2,'第二个品牌14日第二条','2013-03-14 15:14:14')
insert into test values(2,'第二个品牌15日第一条','2013-03-15 13:14:14')
insert into test values(2,'第二个品牌15日第二条','2013-03-15 16:14:14')

想要查询出的效果:
1 第一个品牌14日第二条 2013-03-14 15:14:14.000 1 第一个品牌15日第二条 2013-03-15 12:14:14.000
2 第二个品牌14日第二条 2013-03-14 15:14:14.000 2 第二个品牌15日第二条 2013-03-15 16:14:14.000

就是查询出来的数据 只显示同一品牌今天最后一条数据,和前一天最后一条数据,将他们在一行中显示。
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
细嗅蔷薇 2013-03-20
  • 打赏
  • 举报
回复
谢谢各位,我自己写出来了,唉,完整的语句好长啊。 又不能写视图,现在在看能否写成存储过程。
wwwwb 2013-03-19
  • 打赏
  • 举报
回复
and date(A.`datetime`) between CURDATE()-INTERVAL 1 DAY and curdate()
细嗅蔷薇 2013-03-19
  • 打赏
  • 举报
回复
引用 4 楼 wwwwb 的回复:
SELECT * FROM test A WHERE NOT EXISTS(SELECT 1 FROM TEST WHERE A.`brandid`=`brandid` AND DATE(A.`datetime`)=DATE(`datetime`) AND A.`datetime`<`datetime` )
如果只显示今天与昨天的数据,该怎么写? 13日14日15日 我只显示14与15日的 其他的不要
wwwwb 2013-03-19
  • 打赏
  • 举报
回复
CREATE TABLE test ( id INT(10) AUTO_INCREMENT NOT NULL PRIMARY KEY , brandid INT(10), n VARCHAR(50), `datetime` DATETIME ); INSERT INTO test VALUES(NULL,1,'第一个品牌14日第一条','2013-03-14 14:14:14'); INSERT INTO test VALUES(NULL,1,'第一个品牌14日第二条','2013-03-14 15:14:14'); INSERT INTO test VALUES(NULL,1,'第一个品牌15日第一条','2013-03-15 11:14:14'); INSERT INTO test VALUES(NULL,1,'第一个品牌15日第二条','2013-03-15 12:14:14'); INSERT INTO test VALUES(NULL,2,'第二个品牌14日第一条','2013-03-14 14:14:14'); INSERT INTO test VALUES(NULL,2,'第二个品牌14日第二条','2013-03-14 15:14:14'); INSERT INTO test VALUES(NULL,2,'第二个品牌15日第一条','2013-03-15 13:14:14'); INSERT INTO test VALUES(NULL,2,'第二个品牌15日第二条','2013-03-15 16:14:14'); SELECT * FROM test A WHERE NOT EXISTS(SELECT 1 FROM TEST WHERE A.`brandid`=`brandid` AND DATE(A.`datetime`)=DATE(`datetime`) AND A.`datetime`<`datetime` )
scoutlin 2013-03-19
  • 打赏
  • 举报
回复
select * from (select * from test order by datetime desc) as t group by brandid,date(datetime) having date_sub(curldate(),interval 1 day)<datetime
细嗅蔷薇 2013-03-18
  • 打赏
  • 举报
回复

select t1.id,t1.brandid,t1.n,t1.datetime,t2.id,t2.brandid,t2.n,t2.datetime from
(select * from (select * from test order by datetime desc) as t group by brandid,date(datetime)  )t1 join
(select * from (select * from test order by datetime desc) as t group by brandid,date(datetime)  )t2
on t1.brandid=t2.brandid
where t1.id<t2.id



写出来了,但是尼玛写成视图的时候提示View's SELECT contains a subquery in the FROM clause的错误,请问你们一般是怎么解决的。
细嗅蔷薇 2013-03-18
  • 打赏
  • 举报
回复
引用 1 楼 scoutlin 的回复:
select * from (select * from test order by datetime desc) as t group by brandid,date(datetime)
我想要的效果是这样: 1 第一个品牌14日第二条 2013-03-14 15:14:14.000 1 第一个品牌15日第二条 2013-03-15 12:14:14.000 2 第二个品牌14日第二条 2013-03-14 15:14:14.000 2 第二个品牌15日第二条 2013-03-15 16:14:14.000 谢谢!
scoutlin 2013-03-18
  • 打赏
  • 举报
回复
select * from (select * from test order by datetime desc) as t group by brandid,date(datetime)

56,677

社区成员

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

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