ProgJ 2017-09-27 06:12 采纳率: 50%
浏览 2205
已采纳

Mysql+SSM select语句问题

我有两个数据表

表A 的数据是数字:1,2,3,4等,一行一个数字
另一个 表B 里是数字串:(1,2,3,4...)(1,5,6,7)等等,一行一串数字
我怎么写select语句可以判断 A中查询出的一部分记录集合,是否全部在表B的某行记录里:比如我查询出A中一个集合1,3,4 那么我需要遍历表B判断是否有一个数字串包含这三个数字(包含即可,不需要正好等于,比如B中的一个记录(1,3, 7,4) 也是符合的)
求解该怎么写啊,我试过LIKE和%来匹配,像这样:

 <select id="queryTrainNum" parameterType="java.util.List" resultType="java.lang.Integer">
            select trainNum from trainInfo_  where TrainBlockNum LIKE CONCAT('%',<foreach collection="startList" item="item" >'${item}'</foreach>,'%') 
                                               AND TrainBlockNum LIKE CONCAT('%',<foreach collection="endList"  item="item" >'${item}'</foreach>,'%') 
        </select>

但是实际执行语句是这样的:
select trainNum from trainInfo_ where TrainBlockNum LIKE CONCAT('%', '1' '3' ,'%') AND TrainBlockNum LIKE CONCAT('%', '3' ,'%')
而我期望的效果是这样:
select trainNum from trainInfo_ where TrainBlockNum
LIKE CONCAT('%', '1','%') AND TrainBlockNum LIKE CONCAT('%', '3' ,'%')
以及
select trainNum from trainInfo_ where TrainBlockNum
LIKE CONCAT('%', '3','%') AND TrainBlockNum LIKE CONCAT('%', '3' ,'%')

也就是把集合一次取一个数据拿出来查询,并且遍历这个集合,将所有查询结果合并

  • 写回答

7条回答 默认 最新

  • qq_34687825 2017-09-27 06:33
    关注

    这样试试
    select trainNum from trainInfo_ where TrainBlockNum LIKE CONCAT('%','${item}','%')

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算