一个比较费脑的SQL语句,紧急寻求帮助

happynet 2004-11-25 01:42:35
一个表内有;
A1 B2 C3 D4
AAAAA BBBBB CCCCC 2004-11-12 14:36:40
AAAA BBBBB CCCCC 2004-11-13 14:36:40
AAAAA BBBBB CCCCC 2004-11-13 14:36:40
AAAA BBBBB CCCCC 2004-11-12 14:36:40
AAAA BBBBB CCCCC 2004-11-12 14:36:40
AAAAA BBBBB CCCCC 2004-11-12 14:36:40
AAAA BBBBB CCCCC 2004-11-12 14:36:40
AAAAA BBBBB CCCCC 2004-11-12 14:36:40

用一句SQL语句查询出以下要求:
1、A1字段与D4同时相同的提取一条最新的。
2、D4字段必须是日期相同,时间不考虑。

请各位高手指教。

另外,读取的日期结果RS("D4")必须是这样的:2004-01-02 14:36:40 格式
...全文
221 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
uGain 2004-11-25
  • 打赏
  • 举报
回复
不明白你们在争什么?
lienzhu 2004-11-25
  • 打赏
  • 举报
回复
不明白是说的符合要求的所要数据中取一条,还是符合要求的每个数据组中各取一条!
yb2008 2004-11-25
  • 打赏
  • 举报
回复
接分!
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
aaa 2004-11-12 14:36:41.000 1111111
aaaaaa 2004-11-12 14:36:50.000 1111111
aaaaaaaaa 2004-11-12 14:36:40.000 1111111
aa 2004-12-12 14:36:45.000 1111111


中没有一个A1是相同的吧
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
A1字段与D4同时相同的提取一条最新的。(这个要求是你提的吧)


lienzhu 2004-11-25
  • 打赏
  • 举报
回复
看这组数据
id A1 B2 C3 D4
1 aaaaaa 1111111 222222222 2004-11-12 14:36:40
2 aaaaaa 1111111 222222222 2004-11-12 14:36:40
3 aaa 1111111 222222222 2004-11-12 14:36:41
4 aaaaaaaaa 1111111 222222222 2004-11-12 14:36:40
5 aaaaaa 1111111 222222222 2004-11-12 14:36:50
6 aa 1111111 222222222 2004-12-12 14:36:45

符合要求的应该是 ID=5
-----------------------------------------------------------
xczhouyang你的结果为

aaa 2004-11-12 14:36:41.000 1111111
aaaaaa 2004-11-12 14:36:50.000 1111111
aaaaaaaaa 2004-11-12 14:36:40.000 1111111
aa 2004-12-12 14:36:45.000 1111111

xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
iuhxq(小灰)

left('2004-9-9 11:11:11')
对时间进行上面的操作不是这样是

下面才是正确
left('09 09 2004 11 11 11')
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
left('2004-9-9 11:11:11')
对时间进行上面的操作不是这样是
left('09 09 2004 11 11 11')
happynet 2004-11-25
  • 打赏
  • 举报
回复
SELECT max(a1), max(d4),max(b2),max(a3) FROM tablename GROUP BY a1, LEFT(d4, 10) ORDER BY d4 DESC

这样是可以得到的!^_^!我用在页面上了,完全符合我的要求!^_^!

待会上传!待会可以去看看。^_^!

http://www.chipbid.com/buy_sellinfo.asp
iuhxq 2004-11-25
  • 打赏
  • 举报
回复
left('2004-9-9 11:11:11',10)=?
iuhxq 2004-11-25
  • 打赏
  • 举报
回复
left('2004-9-9 11:11:11')=?
happynet 2004-11-25
  • 打赏
  • 举报
回复
对,是比较慢,有没有快速的方式?
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
我不知道,这句sql那里不对,你可以试一下,再跟我说好吗?

事实才是真理
lienzhu 2004-11-25
  • 打赏
  • 举报
回复
你的检索出来的是一组数据,并且第一条不能保证找到符合要的另一条!
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
GROUP BY a1, LEFT(d4, 10)
A1字段与D4同时相同(只考虑日期)
MAX()
最新
lienzhu 2004-11-25
  • 打赏
  • 举报
回复
首先必须满足“A1字段与D4同时相同” 数据存在!
在这些数据中,找出一条最新的!
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
SELECT MAX(a1) AS Expr1, MAX(d4) AS Expr2,max(b2) as Expr3 FROM TABLE1 GROUP BY a1, LEFT
(d4, 10)
这句话不能吗
lienzhu 2004-11-25
  • 打赏
  • 举报
回复
是慢,但检索出来的符合要求;

1、假设没有符合的,那么怎么能得到了!
xczhouyang 2004-11-25
  • 打赏
  • 举报
回复
lienzhu(李强)
你不觉得数据库的速度会慢的多吗
lienzhu 2004-11-25
  • 打赏
  • 举报
回复
我以为还是在表中建立一个关键字段id
与(select * from TABLE1) as tmp1 生成的临时表联合查询

select top 1 TABLE1.* from test1,(select * from TABLE1) as tmp1 where TABLE1.id<>tmp1.id and TABLE1.A1=tmp1.A1 and left(TABLE1.D4, 10)=left(tmp1.D4, 10) order by TABLE1.D4 Desc
加载更多回复(14)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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