SQL疑问!(30分)

  • 主题发起人 主题发起人 Sammo
  • 开始时间 开始时间
S

Sammo

Unregistered / Unconfirmed
GUEST, unregistred user!
请看ACCESS表:mydata
编号 姓名 日期
10001 张三 2001/05/01
10001 张三 2001/06/01
10001 张三 2001/07/01
10002 李四 2001/08/01
10002 李四 2001/09/01
10002 李四 2001/10/01

我想用SQL命令从上面的库中找这两个记录:
10001 张三 2001/07/01
10002 李四 2001/10/01

我使用了下面的语句:
SELECT 编号,姓名,MAX(日期) AS MAX_DATE
FROM mydata
GROUP BY 编号,姓名,日期;

但不能实现,为什么?怎么写才对呢?谢谢!!:)
 
GROUP BY 中多了个 日期,这样试试:
SELECT 编号,姓名,MAX(日期) AS MAX_DATE
FROM mydata
GROUP BY 编号,姓名;


 
SELECT 编号,姓名,MAX(日期) AS MAX_DATE
FROM mydata
GROUP BY 编号,姓名
 
同意 yysun,oceanwave,
hehe,一时没看清楚题目...
 
记住GROUP BY 子句中不能有包含在计算字段中的字段名存在。(准确的应该不是这样说,
但意思是这样)
 
To yysun:
要是mydata表里还有其他字段,我要想改成这样,又得不到结果了:
SELECT 编号,姓名,电话,地址,MAX(日期) AS MAX_DATE
FROM mydata
GROUP BY 编号,姓名,电话,地址;
 
其实下面这样就可以了。
SELECT 编号,姓名,电话,地址,MAX(日期) AS MAX_DATE
FROM mydata
GROUP BY 编号
 
To zhihuali:
这样子不行!提示出错了,说什么姓名、电话、地址不在GROUP BY里!
 
不是查询办不到,但是请注意你的设计错误了,违反了关系型数据库设计原则。
 
请yysun大哥赐教!!!:)谢谢!!!!:)
 
你得拆成两个表:
table1:编号,姓名,电话,地址
table2:编号,日期

SELECT b.编号,a.姓名,a.电话,a.地址,MAX(b.日期) AS MAX_DATE
FROM table1 a, table2 b
Where a.编号 = b.编号
GROUP BY b.编号,a.姓名,a.电话,a.地址;
 
谢谢yysun大哥!!!学习!!!!:)
但要是有一些字段一定要放在表Table2中的话,该怎么办呢?:)
 
分数不多!请各位大哥不要见怪!!:)
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部