求一条SQL语句的疑问:是不是IN语句里不能用到Varchar里取出的内容
俺有两个表
CREATE TABLE `user` ( #用户表
`Id` int(10) unsigned NOT NULL auto_increment,
`StrName` varchar(20) NOT NULL default '',
`StrRole` varchar(200) NOT NULL default '',
PRIMARY KEY (`Id`)
)
此表数据如下
id StrName StrRole
------ ------------ --------
1 Text 0
2 Text2 0
3 Text3 0
4 admin 1,2
CREATE TABLE `role` ( #属性表
`Id` int(11) unsigned NOT NULL auto_increment,
`Str_Name` varchar(100) NOT NULL default '',
PRIMARY KEY (`Id`)
)
此表数据如下
id Str_Name
------ ----------
1 管理员
2 编辑
3 会员
4 贵宾
5 版主
若用
select A.id,B.Str_Name,A.StrRole From user AS A LEFT JOIN role AS B ON B.Id IN(1,2) Where A.Id=4
可以取出正确的结果
Id Str_Name StrRole
------ ---------- ------------
1 管理员 admin
2 编辑 admin
若用
select A.id,B.Str_Name,A.StrRole From user AS A LEFT JOIN role AS B ON B.Id IN(A.StrRole) Where A.Id=4
则仅能取出第一条记录
Id Str_Name StrRole
------ ---------- ------------
1 管理员 admin
不知何故??