mysql语句

SELECT a.*FROM WYREPORT.WYJT_CW_LRKH_DQ_05_ZJD aWHERE a.cbzx_name LIKE CONCAT('%', (    SELECT d.Province_Name    FROM WYREPORT.WYJT_CW_LRKH_USER_PROVINCE d    WHERE d.username='${username}'), '%')

上述sql语句运行报错

逻辑是

SELECT d.Province_Name FROM WYREPORT.WYJT_CW_LRKH_USER_PROVINCE d WHERE d.username='${username}'

这句sql中,是通过用户名返回用户名所对应的Province_Name

然后再根据 Province_Name 的值,作为一个条件,进行模糊匹配,当 cbzx_name 包含 Province_Name 值时,查询 WYREPORT.WYJT_CW_LRKH_DQ_05_ZJD 表 满足条件的结果。

报错的sql语句应该怎么调试修改呢?

FineReport kevin0428 发布于 2024-3-5 09:54
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
CD20160914Lv8专家互助
发布于2024-3-5 10:18(编辑于 2024-3-5 10:21)

注意空格

SELECT a.* FROM 

WYREPORT.WYJT_CW_LRKH_DQ_05_ZJD a

WHERE a.cbzx_name LIKE CONCAT('%', (SELECT d.Province_Name FROM WYREPORT.WYJT_CW_LRKH_USER_PROVINCE d    WHERE d.username='${username}'), '%')

只要你的d.Province_Name 返回的内容每次保证只有一行,应该是没有问题的

没有你的表,我自己在mysql写的临时表查询是没有问题的,主要是你的空格没有正确

image.png

最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-3-5 09:55(编辑于 2024-3-5 09:56)

SELECT a.*FROM WYREPORT.WYJT_CW_LRKH_DQ_05_ZJD aWHERE a.cbzx_name LIKE CONCAT('%', (    SELECT d.Province_Name    FROM WYREPORT.WYJT_CW_LRKH_USER_PROVINCE d    WHERE d.username='${username}' limit 1), '%')

最佳回答
0
华莉星宸Lv7高级互助
发布于2024-3-5 09:58

这里少了要给空格

image.png

最佳回答
0
用户k6280494Lv6资深互助
发布于2024-3-5 10:00

你子句是不是返回多个值了

  • 4关注人数
  • 204浏览人数
  • 最后回答于:2024-3-5 10:21
    请选择关闭问题的原因
    确定 取消
    返回顶部