一个如何使用SQL查询的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 emoth
  • 开始时间 开始时间
E

emoth

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟有一个数据表,数据如下:
ID Dist Kinds
------------------------
1 0 A
2 2 A
3 5 A
4 11 B
5 15 B
6 17 B
7 19 B
8 25 C
9 29 C
10 33 B
11 37 B
12 39 B
13 41 A
14 46 A
15 49 D
......

想取出的数据结果如下
ID Dist Kinds
------------------------
1 0 A
4 11 B
8 25 C
10 33 B
13 41 A
15 49 D
请问该使用怎样的SQL查询语句
 
晕,你没有说出你为什么要取这几条数据呢?规则是什么?
 
select * from table where (id=1 or ID=4 or ID=8 or ID=13 or ID=15)
其实这类问题最好的方法是把ID添加到checkedBox中,让用户选择需要显示的数据,一劳永逸的解决问题。
 
思路上是否可以这样:先取出第一条记录.然后比较前后两条记录kinds的值,如果不相等,取出后一条记录,继续比较....
 
你的问题不能写一个sql语句,直接循环query很容易取值
s:='';
while not query.eof do begin
if s<>query.fieldbyname('kinds').asstring then s:=query.fieldbyname('kinds').asstring
query.next;
end;
把s存入其他query,或stringList等都可以得出数据集。
 
lucky.gong的方法是可以的,问题是我想用SQL语句来解决这个问题,而不是通过对数据记录的循环。

Tophi兄弟,是我的疏忽,没把问题说清楚。我的意思是在原始数据中,按ID先后顺序,其Kinds相同的为同一类型,但是如果Kinds相同的记录中间有无其它的Kinds数据,则该相同类型的Kinds数据应划分成不同的段。比喻如下:
ID 距离 类型
1 0 A
2 5 A
3 6 A
4 12 B
5 15 B
6 19 A
...

那么我需要的结果数据是
ID 距离 类型
1 0 A
4 12 B
6 19 A
...
不知道这样说明白了没有 :-(
 
select * from 表 a
where not exists(select 1 from 表 b where a.id = b.id+1 and a.Kinds = b.Kinds)
 
问题是说明白,不过不是SQL语句能解决的,我认为
最起始也要用上存储过程
 
ysai兄弟,我是要通过SQL对表A查询得到一个数据集,即是你所说的表B,而不是在表A和表B之间进行选择啊。
 
用上存储过程......

可问题我用的是KAO来访问的MDB数据库啊,此路不通哩。。。。。。:-(
 
>>ysai兄弟,我是要通过SQL对表A查询得到一个数据集,即是你所说的表B,而不是在表A和表B之间进行选择啊。

你看得懂SQL语句吗?
 
ysai兄弟,汗。。。。。。
 
我觉得用SQL难以实现楼主想要的...
 

Similar threads

A
回复
0
查看
582
Andreas Hausladen
A
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部