b 表作为 a 表的一对多子表,类似:
class A {
private List<B> params;
}
现有List<B> authorityParams;
{'111','222'}
需要查询出,小于等于 authorityParams 的List<A>
如果用 in 会查询出 a.params = {'111','222','333'}
这样的错误结果,求解
就是查询条件集合的子集,假设条件集合为 auth.params[11,22,33]
,数据有
a1.params = [11,22,33,44]
a2.params = [22,33]
a3.params = [22,33,44]
a4.params = [11,22,33]
只有a2、a4符合条件
1
akira 2019-09-12 14:55:40 +08:00
类型问题?而且你的 in 的 sql 怎么写的
|
2
avk458 OP |
3
gIrl1990 2019-09-12 15:44:32 +08:00
没看懂。能不能列个 table
比如 table A A 字段 1 A 字段 2 A 值 11 A 值 21 A 值 21 A 值 22 table B B 字段 1 B 字段 2 B 值 11 B 值 21 B 值 21 B 值 22 然后想要查出什么样的结果。 |
4
akira 2019-09-12 15:47:08 +08:00
同意三楼,你这个描述。。看不懂啊。。
|
5
avk458 OP @gIrl1990
+----------+ +-----------------+ |id name | |id obj_id name | | ---------+ +-----------------+ |1 a1 | |1 1 b1 | |2 a2 | |2 1 b2 | |3 a3 | |3 1 b3 | |4 a4 | |4 3 b4 | |5 a5 | |5 3 b5 | +----------+ +-----------------+ 如上有,a1.params = ['b1','b2','b3']; 如果 authorityParams 为 1,2,3 的话,那么 a1 能被查出来, 如果 authorityParams 为 1,2 的话,a1 不应该被查出来。 |
8
gIrl1990 2019-09-12 16:38:08 +08:00
@avk458 为什么你那两个表是写在同一行的?还是没看懂。我来给你重新排版下吧。
-----以下是表 A +----+ | id | +----+ | a1 | +----+ | a2 | +----+ ----以下是表 B +------+-----+ | auth | aid | +------+-----+ | 1 | a1 | +------+-----+ | 2 | a1 | +------+-----+ | 3 | a1 | +------+-----+ | 1 | a2 | +------+-----+ | 2 | a2 | +------+-----+ ----以下是期望查询结果 - 可以看到在表 B 中,aid=a1 的有 3 个[1, 2, 3], aid=a2 的只有 2 个[1, 2] - 条件是 auth=[1, 2, 3] - 然后就是说如果表 B 中是[1, 2, 3, 如果这里还有 4 的话]的话就查出这个 a1 - [1, 2, 如果这里还有 4 的话] 不存在 3,所以不要查出 a2 是不是这个查询意思?老哥。 |
9
avk458 OP @gIrl1990 感谢感谢。
按照你的数据,条件如果是[1,2,3] a1 a2 都符合小于等于 auth 条件,如果 auth 条件是[1,2] 那么只有 a2 应该被查出来。 |
10
gIrl1990 2019-09-12 17:05:19 +08:00
@avk458 不知道他的意思。他标题是全包含。。我以为他的意思是
- 条件 [1,2,3] - 那么表 B 中 aid=a1 [1, 2, 3] , 满足条件 - 那么表 B 中 aid=a2 [1, 2],没有 3,不满足条件 然后你的 小于等于 又是另一个意思 - 条件 2 - 那么表 B 中 aid=a1 [1, 2, 3] , 3>2 不满足条件 - 那么表 B 中 aid=a2 [1, 2],没有 3,满足条件 |
11
gIrl1990 2019-09-12 17:06:36 +08:00
补充上一条,看错了,avk458 就是楼主。。那就按照 小于等于 的意思来
|
12
gIrl1990 2019-09-12 17:15:49 +08:00
|
13
avk458 OP @gIrl1990 不是比较大小啦,id 是 uuid 怎么比。。。没表达太清,a.params 小于等于 auth.params 是条件包含目标,目标是条件的子集。
|
14
gIrl1990 2019-09-12 17:29:22 +08:00
@avk458 我屮艸芔茻。好像明白了,你是说子集是吧。。
- 条件 [1,2,3] - 那么表 B 中 aid=a1 [1, 2, 3] , 满足条件 - 那么表 B 中 aid=a2 [1, 2],是条件的子集,也满足条件 那我只能暂时只能说 “这个三角函数我不会,啪——逃学威龙” |
16
csusong 2019-09-12 18:06:35 +08:00
查出不在查询条件中的数据,排除掉,剩下的就是满足子集条件的数据了呀。
|