查询疑问

wynlc 2012-05-09 12:03:06
执行以下语句1:
SELECT EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs'

得到结果:
'加工中心1','加工中心2','加工中心3'



执行以下语句2:

SELECT 
[JO002]
,[JO003]

FROM [EAPS].[dbo].[APSJOB]
where
JO015 IN ('加工中心1','加工中心2','加工中心3')

可以查询出数据

执行以下语句3:

SELECT 
[JO002]
,[JO003]

FROM [EAPS].[dbo].[APSJOB]
where
JO015 IN (SELECT EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs')

结果为空

想请教下原因

...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wynlc 2012-05-09
  • 打赏
  • 举报
回复
还有没有 简便一些的办法
wynlc 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SELECT EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs'

--取出来的数据是 '加工中心1','加工中心2','加工中心3' 这个作为一个完整的字符串用in 肯定是不行的。

SQL code
declare @sql nvarchar(4000)

set @sql = 'SELECT
[JO002]
……
[/Quote]

这个有错误
  • 打赏
  • 举报
回复



DECLARE @STR VARCHAR(200)
SET @STR=''

SELECT @STR=EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs'

EXEC('
SELECT
[JO002]
,[JO003]

FROM [EAPS].[dbo].[APSJOB]
where
JO015 IN ('+@STR+')'

小天 2012-05-09
  • 打赏
  • 举报
回复
SELECT [JO002],
[JO003]
FROM [EAPS].[dbo].[APSJOB] TA
WHERE EXISTS (
SELECT 1
FROM [EAPS].[dbo].APSEMP TB
WHERE TB.EM001 = 'hs'
AND TA.J0015 = TB.EM007
)
  • 打赏
  • 举报
回复


DECLARE @STR VARCHAR(200)
SET @STR=''
EXEC('
SELECT @STR=EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = ''''hs'''''
SELECT
[JO002]
,[JO003]

FROM [EAPS].[dbo].[APSJOB]
where
JO015 IN ('+@STR+')'
Mr_Nice 2012-05-09
  • 打赏
  • 举报
回复
SELECT EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs'

--取出来的数据是 '加工中心1','加工中心2','加工中心3' 这个作为一个完整的字符串用in 肯定是不行的。

declare @sql nvarchar(4000)

set @sql = 'SELECT
[JO002]
,[JO003]
FROM [EAPS].[dbo].[APSJOB]
where
JO015 IN ('+SELECT EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs'+')'

exec(@sql)
孤独加百列 2012-05-09
  • 打赏
  • 举报
回复
试试,没有数据测试不了

SELECT
[JO002]
,[JO003]

FROM [EAPS].[dbo].[APSJOB]
where CHARINDEX(JO015,(SELECT EM007 FROM [EAPS].[dbo].APSEMP WHERE EM001 = 'hs')) > 0

34,590

社区成员

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

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