ProgJ 2017-09-27 06:12 采纳率: 33.3%
浏览 2206
已采纳

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 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)