200分求教一个高难度SQL语句!!!!!!!(200分)

  • 主题发起人 主题发起人 葬月
  • 开始时间 开始时间

葬月

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构如下

标题 文本 读者列表(数据类型都是字符串)


比方说我有个登陆的用户名为 xxx
如果某条记录在<读者列表>中是放一个字符串 如 'xxx','sss','ddd'
这说明用户 xxx 是可以查看这条记录的 因为 'xxx','sss','ddd'里有'xxx'

如果某条记录在<读者列表>中是放一个字符串 如 'sss','ddd'
这说明用户 xxx 是不可以从数据库调出这条记录的 因为 'sss','ddd'里没有'xxx'

我原想用 关键字in select * from textinfo where 'xxx' in ( 读者列表 )

但好像不行
 
select * from textinfo where ( 读者列表 ) like '%''xxx''%'
 
怎么会这样设计权利控制呢?
不过BDFan的可行
 
同意楼上!hehe

晚了!
 
没错,用like
 
或者用
select * from textinfo where ( 读者列表 ) like '"%'+'xxx'+'%"'
哈哈,骗点分
 
你应该把他分开。
 
用in 肯定不行啊,查出的一条记录啊,
用like可行,
不过这样设置权限倒是很少见啊。
 
那你们是怎么设置权限的,,比方说一条记录,它只允许一些人看见,只允许一些人编辑
怎么设置????(这些设置当然要到服务端设置)
 
select * from textinfo where ( 读者列表 ) like '%''xxx''%'
这条语句出错的
两个'怎么会不出错呢
你把单引号换成其他的分隔符

,sss,ddd,xxx,
这样也可以,不过记得在前面和后面加一个逗号
这样方便查找
select * from textinfo where ( 读者列表 ) like '%,'xxx',%'
上面的的语句要好些,
 
我也喜欢这样设置权限, 嘻嘻。 这样在服务器端修改客户端传来的sql容易而且控制也方便
 
select * from textinfo where ( 读者列表 ) like '%''xxx''%'
那你们是怎么设置权限的,,比方说一条记录,它只允许一些人看见,只允许一些人编辑
怎么设置????(这些设置当然要到服务端设置)???
呵,读者列表中不是有XXXX吗?哈,那就在XXXX中再加个值为权限呀
比如用户为ABC,修改为M,查看为L
那么XXXX就可以为ABCM或ABCL呀
 
如果某条记录在<读者列表>中是放一个字符串 如 'xxx','sss','ddd'

这句话什么理解?
是他们连在一起的?
还是怎么样?
如果把所有的读者id连在一起,建立这样的数据库,本来就违犯了数据库的第一范式(原子性)

你可以另建一个表啊,字段为(标题id,读者id)其中标题id和你上面的那个表建立关联(外关键字)
这样就可以使用你上面的in语句查询了。
 
select * from textinfo where 读者列表 like '%xxx%' [8D]
 
用:关键字in select * from textinfo where 'xxx' in ( 读者列表 )
而且照你的表的建立,要想查找到为true的话,
只有这样一种情况:该条记录的读者字段只有一个读者‘xxx’

建议好好理解一下in的子查询语句
 
1: 读者列表:='"xxx","sss","ddd"';
select * from textinfo where 'xxx' in ( 读者列表 )
2: select * from textinfo where 'xxx' like "%"+xxx+"%"
 
同意hb_wshsh的观点。
若不怕麻烦,可这样写
select * from textinfo where 读者列表
in (select 读者列表 from textinfo where 读者列表 like '%xxx%' )
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
903
DelphiTeacher的专栏
D
后退
顶部