我有一个与此类似的问题:
SQL: how to select a single id ("row") that meets multiple criteria from a single column
但就我而言,这些值对并不是唯一的,例如:
user_id可以与多个相同的祖先配对(多个行具有相同的user_id - 祖先)。
这可能是一个好的有效解决方案吗?
必须通过条件的祖先数组可能很大且可变(直到200)这使我认为连接解决方案效率非常低。此外,由于值对不是唯一的,“in..group by”解决方案将不起作用。
答案 0 :(得分:1)
如果我错了,请纠正我。你想知道哪个user_id有X个祖先(X是可变数量的祖先)?
Select t.user_id
from (select distinct *
from your_table) t
where t.ancestry in XAncestors
group by t.user_id
having count(t.user_id) = length(XAncestors)
只是为了澄清,这是与您发布的问题完全相同的查询,但在from中使用子查询仅选择不同的值