mysql查询in  问题

查询数据走到   hosptal_id为0         devicetype有值   最终查询回出现错误。这是为什么呢。  我在navicat里面填充数据直接查也是可以的

SELECT DISTINCT

checkitem.*

FROM

rims_reporting_image_review review

LEFT JOIN rims_reporting_dictionary_checkitem checkitem ON review.checkitem_fk = checkitem.uuid 

WHERE

review.devicetype_fk IN ("+split(devicetype,",")+")

AND review.createtime BETWEEN "+datastart+" AND "+dataend+"

AND review.agent_fk IN ( SELECT agent_uuid FROM view_permission_agent_erpreport WHERE username = "+username+" AND agent_state = 1 )



FineReport 郝波 发布于 2020-4-15 09:40 (编辑于 2020-4-15 10:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
shirokoLv6资深互助
发布于2020-4-15 10:27

image.png

对比一下,devicetype应该填  {xxx}","{xxx} 才对。

可以手动改间隔,也可以用公式

 review.devicetype_fk IN ("${JOINARRAY(split(devicetype,','),'","')}")

最佳回答
0
snrtuemcLv8专家互助
发布于2020-4-15 09:58(编辑于 2020-4-15 10:30)

使用split函数将字段拆开,split(devicetype_fk,",")



SELECT DISTINCT checkitem.* FROM rims_reporting_image_review review

LEFT JOIN rims_reporting_dictionary_checkitem checkitem ON review.checkitem_fk = checkitem.uuid 

WHERE review.devicetype_fk IN (${split(devicetype,","})

  AND review.agent_fk IN (SELECT agent_uuid FROM view_permission_agent_erpreport WHERE username = '${username}' AND agent_state = 1 )

  AND review.createtime BETWEEN '${datastart}' AND '${dataend}'


  • 郝波 郝波(提问者) 老哥 麻烦再看看 你这个split我加进去了 但是这次在开头都出现错误了。 没法测试到你说的这个地方。。。
    2020-04-15 10:15 
  • snrtuemc snrtuemc 回复 郝波(提问者) 改上面语句试一下
    2020-04-15 10:30 
  • 郝波 郝波(提问者) 回复 snrtuemc 老哥 方便加个QQ吗? 798248195
    2020-04-15 10:36 
最佳回答
0
wukaihuaLv5初级互助
发布于2020-4-15 10:22

加个replace ,把逗号,替换成逗号引号','

review.devicetype_fk IN ("+replace(joinarray(maparray(devicetype,""),","),",","','")+")

  • 4关注人数
  • 428浏览人数
  • 最后回答于:2020-4-15 10:30
    请选择关闭问题的原因
    确定 取消
    返回顶部