求一条SQL语句的疑问:是不是IN语句里不能用到Varchar里取出的内容

bont2004 2006-02-03 10:39:36
俺有两个表

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

不知何故??
...全文
178 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bont2004 2006-02-09
  • 打赏
  • 举报
回复
顶起来!!
bont2004 2006-02-04
  • 打赏
  • 举报
回复
解决办法是将含有多个值行转成列,即变成(1,2,...,n)这样的一个集合。

可以详细说说吗
数据库这个,俺很菜
hy2003fly 2006-02-04
  • 打赏
  • 举报
回复
因为A.StrRole为varchar类型,在处理与数字有关的操作时,如果是数字开头的,例如:'1,2'
它会自动只取前面的1,而忽略后面的所有。解决办法是将含有多个值行转成列,即变成(1,2,...,n)这样的一个集合。
本文基于中国A股上市企业数据,分析了逻辑型和学习型AI技术应用对企业创新的影响。通过机器学习生成AI词典并分析年报文本,测量AI应用水平。研究发现,AI应用通过增加知识多样性、打破组织惯例和提高资源配置效率促进企业创新,且企业的吸收能力增强了这一促进作用 参照李玉花(2024)的做法,团队对来自中国工业经济《人工智能技术应用如何影响企业创新》一文中的基准回归部分进行复刻 团队将原文数据更新至2023年,并对基准回归进行复刻。数据年份为2007-2023年,包括原始数据、处理dofile,基准回归代码 一、数据介绍 数据名称:人工智能技术应用如何影响企业创新 数据范围:A股上市公司 数据年份:2007-2023年 有效样本:33615条 数据说明:参考《管理世界》中姚加权(2024)的做法,测算人工智能水平 内含原始数据、dofile和基准回归 二、数据指标 股票代码 股票简称 年份 省份 城市 区县 省份代码 城市代码 区县代码 行业代码 行业名称 企业上市年龄_年 是否ST或金融类 总资产_万元 营业收入增长率_% 资产负债率_% 总资产收益率_% 研发投入占营业收入比例_% 人工智能词频和 人工智能词频和加1取对数 企业专利申请总量 企业发明专利申请量 企业专利授权总量 企业发明专利授权量 三、参考文献 李玉花,林雨昕,李丹丹.人工智能技术应用如何影响企业创新[J].中国工业经济,2024,(10):155-173.

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧