假设我们有一张这样的桌子。
UserID | GroupID
u1 | G1
u2 | G1
u3 | G2
u1 | G2
u1 | G4
u1 | G3
如何生成 SQL 查询来验证 -> 用户“U1”在 G1 和 G2 中,但不在 G4 中”
这个逻辑可以是动态的。所以可能是 -> 如果用户“U1”在 G2 而不是在 G3
所以基本上我需要验证“逻辑”是否返回 true 或 false ,对于以这种方式记录的“逻辑”:
返回用户,如果他们在 (@Gr='gr1' or @Gr='gr2') and @gr<>'gr3'
希望我解释正确:)
答案 0 :(得分:0)
希望,我正确理解了您的问题。
请检查以下查询,如果您没有定义组,这可以工作, 根据您的需要更改 where 条件。
例如import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "[^a-zA-Z0-9,.\\s]";
final String string = "The input here @$%/";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
}
}
to verify -> is a user 'U1' is in G1 and in G2 but not In G4
答案 1 :(得分:0)
您编写的逻辑可以通过子查询来完成。 您将需要 IN 子句这样做。 注意使用表别名(ug2 ug3) 为每个子查询查询同一张表
SELECT ug1.UserID
, ug1.GroupID
FROM [UserGroupTable] ug1
WHERE (ug1.UserID IN ( SELECT ug2.UserID
FROM [UserGroupTable] ug2
WHERE ug2.GroupID IN ('G1','G2')
)
)
AND (ug1.UserID NOT IN ( SELECT ug3.UserID
FROM [UserGroupTable] ug3
WHERE ug3.GroupID IN ('G3')
)
)