我有两个数据表
表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' ,'%')
也就是把集合一次取一个数据拿出来查询,并且遍历这个集合,将所有查询结果合并