标题:一个SQL语句,求助[初学者]
只看楼主
theend12
Rank: 2
来 自:ASP|PHP菜鸟
等 级:论坛游民
帖 子:83
专家分:42
注 册:2009-10-8
结帖率:72%
已结贴  问题点数:6 回复次数:8 
一个SQL语句,求助[初学者]
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没有推荐任何人,如何能够筛选出来呢?
搜索更多相关主题的帖子: 如何 用户 
2015-07-30 23:14
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:2 
没有推荐任何人的特征是什么呢?你凭什么认定vip4和vip8就没有推荐任何人?

活到老,学到老! http://www. E-mail:hu-jj@
2015-07-31 05:52
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
得分:2 
select ID from member where ID not exists (select distinct tuijianid from member)
2015-07-31 08:30
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:2 
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)
2015-07-31 16:53
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
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
2015-07-31 17:08
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:2 
没看明白呢
2015-08-01 06:42
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
以下是引用tlliqi在2015-8-1 06:42:35的发言:

没看明白呢

我也是许多才明白的,实际上是筛选在推荐者人字段中不存在的ID号,即没有推荐过任何人的ID。

活到老,学到老! http://www. E-mail:hu-jj@
2015-08-02 10:59
liwt007
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2015-8-2
得分:2 
select t.ID from member m,member t where m.tuijianid != t.ID;

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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-455936-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066648 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved