注册 登录
编程论坛 SQL Server论坛

一个SQL语句,求助[初学者]

theend12 发布于 2015-07-30 23:14, 1465 次点击
MEMBER表中存储所有用户数据,每个注册用户都会有一个tuijianid这个字段,也就是他的上级推荐ID,如何能够筛选出来【没有推荐】过的用户?
比如

ID    tuijianid

vip1    vip0

vip2    vip1

vip3    vip2

vip4    vip0

vip5    vip3

vip6    vip5

vip7    vip6

vip8    vip7

vip9    vip2

vip10    vip9

那么这些数据里,只有vip4和vip8没有推荐任何人,如何能够筛选出来呢?
8 回复
#2
hu9jj2015-07-31 05:52
没有推荐任何人的特征是什么呢?你凭什么认定vip4和vip8就没有推荐任何人?
#3
kinvanhon2015-07-31 08:30
select ID from member where ID not exists (select distinct tuijianid from member)
#4
mywisdom882015-07-31 16:53
3楼的是SQL语法,
在VFP9中,改为
select ID from member where ID not in (select distinct tuijianid from member)
**
CREATE CURSOR  member(id c(12),tuijianid c(12))
**ID    tuijianid
INSERT INTO member(id,tuijianid) values('vip1','vip0')
INSERT INTO member(id,tuijianid) values('vip2','vip1')
INSERT INTO member(id,tuijianid) values('vip3','vip2')
INSERT INTO member(id,tuijianid) values('vip4','vip0')
INSERT INTO member(id,tuijianid) values('vip5','vip3')
INSERT INTO member(id,tuijianid) values('vip6','vip5')
INSERT INTO member(id,tuijianid) values('vip7','vip6')
INSERT INTO member(id,tuijianid) values('vip8','vip7')
INSERT INTO member(id,tuijianid) values('vip9','vip2')
INSERT INTO member(id,tuijianid) values('vip10','vip9')
select ID from member where ID not in (select distinct tuijianid from member)
#5
mywisdom882015-07-31 17:08
CREATE CURSOR  member(id c(12),tuijianid c(12))
INSERT INTO member(id,tuijianid) values('vip1','vip0')
INSERT INTO member(id,tuijianid) values('vip2','vip1')
INSERT INTO member(id,tuijianid) values('vip3','vip2')
INSERT INTO member(id,tuijianid) values('vip4','vip0')
INSERT INTO member(id,tuijianid) values('vip5','vip3')
INSERT INTO member(id,tuijianid) values('vip6','vip5')
INSERT INTO member(id,tuijianid) values('vip7','vip6')
INSERT INTO member(id,tuijianid) values('vip8','vip7')
INSERT INTO member(id,tuijianid) values('vip9','vip2')
INSERT INTO member(id,tuijianid) values('vip10','vip9')
**大家注意了,问题来了。
**方法1:
select distinct RTRIM(tuijianid) as tjid from member INTO CURSOR aa
select ID from member where rtrim(ID) NOT in (SELECT tjid FROM aa)
**结果是:vip4,vip8,vip10
select ID from member where RTRIM(ID) not in (select distinct RTRIM(tuijianid) as tjid from member)
**方法2:
**结果是:vip4,vip8,,,,为什么vip10不出现在这?VPF9
#6
tlliqi2015-08-01 06:42
没看明白呢
#7
hu9jj2015-08-02 10:59
以下是引用tlliqi在2015-8-1 06:42:35的发言:

没看明白呢

我也是许多才明白的,实际上是筛选在推荐者人字段中不存在的ID号,即没有推荐过任何人的ID。
#8
liwt0072015-08-02 13:59
select t.ID from member m,member t where m.tuijianid != t.ID;

[ 本帖最后由 liwt007 于 2015-8-2 14:02 编辑 ]
1