我有3张桌子:
我需要从位置表中获取所有数据,条件是如果要求位置的人在黑名单中显示为阻止或被阻止,则不会看到这些被禁止的位置。 E.g:
Blacklist:
10 11
Location
10 74.1231 51.12312
11 82.1231 -1.31241
12 10.2121 34.12312
如果12要求他获得所有位置。如果11要求位置,他将只获得12的位置,与10相同。
在请求中需要帮助
答案 0 :(得分:1)
您可以使用union来获取blockerid和blockid作为不在
中的idPersonView
答案 1 :(得分:0)
我强烈建议将查询定相为:
select l.*
from location l
where not exists (select 1 from blocklist bl where bl.blockerid = l.uuid and bl.blockedid = ?) and
not exists (select 1 from blocklist bl where bl.blockedid = l.uuid and bl.blockerid = ?);
?
是您关注的用户ID的占位符。
这可以利用blocklist
,blocklist(blockerid, blockedid)
和blocklist(blockedid, blockerid)
上的两个索引获得显着的性能提升。