SQL in 语句问题

rhj_koko 2015-08-12 05:00:31
我查询的是SAP的信息
select U_oldcode from OCRD where CARDCODE='2201019'
此语句读出‘2204014’,‘2201009’

如果写成这样
select * from XIAOSHOU5_xxzx where in (select U_oldcode from OCRD where CARDCODE='2201019')
没有数据

如果写成这样
select * from XIAOSHOU5_xxzx where in (’2204014‘,’2201009‘)
有数据
...全文
333 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
frankl123 2015-08-27
  • 打赏
  • 举报
回复
where 后边漏掉字段了也能执行?
gw6328 2015-08-27
  • 打赏
  • 举报
回复
确定你的语句能通过?where in?
shuxin211 2015-08-26
  • 打赏
  • 举报
回复
大神真多,学习帮顶。
踏雪无痕 2015-08-26
  • 打赏
  • 举报
回复
CARDCODE列有NULL值,用ISNULL函数替换掉就好了
yooq_csdn 2015-08-17
  • 打赏
  • 举报
回复
引用 9 楼 rhj_koko 的回复:
[quote=引用 8 楼 yooq_csdn 的回复:] 楼主 如果你想要的效果是 in('a','b','c','d') 转换成 in(select col from table)这样的写法 那么 select col from table 的结果是 a b c d 才行,即 in 中的某个值是一行。 a,b,c,d 这样的结果是不行的
谢谢~~ 如果我想这样实现,有什么简单方法嘛?[/quote] 如果你非要用现在的方法可以这样试试


declare @str varchar(2000)
declare @cmd varchar(2000)

select @str=U_oldcode from OCRD where CARDCODE='2201019'
set @cmd='select * from XIAOSHOU5_xxzx where XXXXXXX in  ('+@str+')'
exec(@cmd)

rhj_koko 2015-08-13
  • 打赏
  • 举报
回复
引用 8 楼 yooq_csdn 的回复:
楼主 如果你想要的效果是 in('a','b','c','d') 转换成 in(select col from table)这样的写法 那么 select col from table 的结果是 a b c d 才行,即 in 中的某个值是一行。 a,b,c,d 这样的结果是不行的
谢谢~~ 如果我想这样实现,有什么简单方法嘛?
yooq_csdn 2015-08-13
  • 打赏
  • 举报
回复
楼主 如果你想要的效果是 in('a','b','c','d') 转换成 in(select col from table)这样的写法 那么 select col from table 的结果是 a b c d 才行,即 in 中的某个值是一行。 a,b,c,d 这样的结果是不行的
LongRui888 2015-08-13
  • 打赏
  • 举报
回复
如果写成这样 select * from XIAOSHOU5_xxzx where in (select U_oldcode from OCRD where CARDCODE='2201019') 没有数据 如果写成这样 select * from XIAOSHOU5_xxzx where in (’2204014‘,’2201009‘) 有数据 你用的是什么数据库,sql server 吗? 类似这样的语句,我在sql server里执行,就报错了。
xiaoxiangqing 2015-08-13
  • 打赏
  • 举报
回复
不可能吧,把语句运行看一下。
rhj_koko 2015-08-13
  • 打赏
  • 举报
回复
引用 4 楼 Cherise_huang的回复:
这样查出来结果如图:
额 不好意思 漏写了,我这是在sap查询的
Cherise_huang 2015-08-12
  • 打赏
  • 举报
回复
这样查出来结果如图:
Cherise_huang 2015-08-12
  • 打赏
  • 举报
回复
where后面有一个字段+in
Cherise_huang 2015-08-12
  • 打赏
  • 举报
回复
你的语法有错误

CREATE TABLE OCRD 
(
	U_oldcode VARCHAR(20),
	CARDCODE VARCHAR(20)
) 
INSERT INTO OCRD
SELECT '2204014','2201019' UNION ALL
SELECT 'aa','ss' UNION ALL
SELECT '2201009','2201019' UNION ALL
SELECT 'ww','dd' 

select U_oldcode from OCRD where CARDCODE='2201019'

CREATE TABLE XIAOSHOU5_xxzx
(
 code VARCHAR(20),
 ID int	
)
INSERT INTO XIAOSHOU5_xxzx
SELECT '2204014',2 UNION ALL
SELECT '2201009',3 UNION ALL
SELECT '33',4 UNION ALL
SELECT '33',5 UNION ALL
SELECT '33' ,8UNION ALL
SELECT '2204014',8 

select * from XIAOSHOU5_xxzx where code in (select U_oldcode from OCRD where CARDCODE='2201019')


select * from XIAOSHOU5_xxzx where code in ('2204014','2201009')

rhj_koko 2015-08-12
  • 打赏
  • 举报
回复
为什么会这样

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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