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条)

报告相同问题?

悬赏问题

  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。