我需要从一组其他子查询中不存在的所有用户中进行选择:
SELECT user_id
FROM (<userSubQuery1>)
WHERE
user_id NOT IN (<badUserSubQueryA>) AND
user_id NOT IN (<badUserSubQueryB>) AND
user_id NOT IN (<badUserSubQueryC>)
只有我需要在许多不同的查询中执行NOT IN过滤器,其中userSubQuery和badUserSubQueries可能不同。 E.g:
SELECT user_id
FROM (<userSubQuery2>)
WHERE
user_id NOT IN (<badUserSubQueryB>) AND
user_id NOT IN (<badUserSubQueryC>) AND
user_id NOT IN (<badUserSubQueryD>)
我所选择的所有子查询和NOT IN中曾经使用过的查询都很复杂,因此我不想复制通常相同的NOT IN子查询的代码(badUserSubQueryB和我的例子中的badUserSubQueryC。)
我可以通过动态sql来实现这一点,但如果我能避免它,我宁愿不这样做。有可能吗?
答案 0 :(得分:2)
如何将所有不良用户ID存储在可以过滤的索引临时表中?
答案 1 :(得分:2)
如何为要重用的每个复杂子查询创建视图?
答案 2 :(得分:0)
我会像这样对它进行攻击:
尝试以这样的反向逻辑来考虑这个
SELECT user_id
FROM (<userSubQuery1>)
MINUS
(
SELECT useri_id
FROM <badUserSubQueryB>
UNION
SELECT useri_id
FROM <badUserSubQueryC>
UNION
SELECT useri_id
FROM <badUserSubQueryD>
)
让我知道它是怎么回事
干杯, 亚历