请教一个关于SQL FOR ACCESS2000的问题(50分)

  • 主题发起人 主题发起人 wp231957
  • 开始时间 开始时间
W

wp231957

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有如下数据
20040101
20040102
20040103
20040104
20050101
20050102
20050103
20060101
20060102
20060103
20060201
20060202
20060203
等等,我想把前6位并且不重复的都挑选出来,放到LISTBOX中去,该如何做
也就是说,最后形成的结果是
200401
200501
200601
200602
多余的就不要了,DELPHI 7+ADO+ACCESS2000数据库,谢谢各位
 
select left(a,1,6) from table group by left(a,1,6)
 
简单;
select left(字段,6) as 新字段 from (select top 6 * from Table order by 字段) group by left(字段,6)
 
示例
A. 对列使用 LEFT 函数
下面的示例返回每个书名最左边的 5 个字符。

USE pubs
GO
SELECT LEFT(title, 5)
FROM titles
ORDER BY title_id
GO

下面是结果集:

-----
The B
Cooki
You C
Strai
Silic
The G
The P
But I
Secre
Net E
Compu
Is An
Life
Prolo
Emoti
Onion
Fifty
Sushi

(18 row(s) affected)
 
这样提示 FIELD XH 没有找到呢
adoq.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'/data.mdb;Persist Security Info=False';
adoq.SQL.Clear ;
adoq.SQL.Text :='select left(xh,6) from base group by left(xh,6)';
adoq.Open ;
form1.ComboBox1.Items.Add('所有班级');
while not adoq.Eof do begin
form1.ComboBox1.Items.Add(copy(adoq.fieldbyname('xh').AsString,1,6)); //这里出错
form1.listBox1.Items.Add(copy(adoq.fieldbyname('xh').AsString,1,6));
adoq.Next;
end;
 
'select left(xh,6)//这里字段名为空 from base group by left(xh,6)'所以
'select left(xh,6) as 新字段 from base group by left(xh,6)'
全代码为
adoq.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'/data.mdb;Persist Security Info=False';
adoq.SQL.Clear ;
adoq.SQL.Text :='select left(xh,6) as 新字段 from base group by left(xh,6)';
adoq.Open ;
form1.ComboBox1.Items.Add('所有班级');
while not adoq.Eof do begin
form1.ComboBox1.Items.Add(copy(adoq.fieldbyname('新字段').AsString,1,6)); //这里出错
form1.listBox1.Items.Add(copy(adoq.fieldbyname('新字段').AsString,1,6));
adoq.Next;
end;
 
now,我现在为表增加了一个名为CLASS1的字段
专门保存 XH的1--6个字符

现在这个语句似乎不对,该怎么写
adoq.SQL.Text :='update base set class1=(select left(xh,6) from base)';
 
谢谢清新空气,我还是用UPDATE吧,增加一个字段吧
麻烦帮看看
 
我服了你了!你是在写什么?
insert into 临时表 select left(xh,6) from base
 
我就是想让(其中CLASS1为字段名,XH为字段名,2个字段位于同一个表)
第N条记录的CLASS1=第N条记录的LEFT(XH,6)
 
1、Class1这个字段是否存在;
2、好象是这样写的
'update base set base.class1=left(xh,6)';
 
谢谢,搞定了
是这样的语句:
adoq.SQL.Text :='update base set class1=left(xh,6)';

接分
 
接受答案了.
 
后退
顶部