在表table
鉴于这些条目:什么是简单的方法来执行这个复杂的SELECT查询?
user entry
A 1
A 2
A 5
A 6
B 1
B 2
B 3
B 4
B 5
B 6
C 1
C 4
D 1
D 2
D 5
D 6
D 7
D 9
我们有一个子集entries_A
一起工作,这是数组[1,2,5,6]
。
问题:
- 查找具有相同的条目[1,2,5,6]多,例如所有用户[1,2,5,6,7]或[1,2,3,5,6]。
- 查找所有拥有大量相同条目(以及更多)的用户,例如[1,2,5,9]或[2,5,6,3]。
第一个问题的最佳解决方案,我可以想出,是以下选择查询:
SELECT DISTINCT user AS u FROM table WHERE EXISTS (SELECT * FROM table WHERE entry=1 AND user=u)
AND EXISTS(SELECT * FROM table WHERE entry=2 AND user=u)
AND EXISTS(SELECT * FROM table WHERE entry=5 AND user=u)
AND EXISTS(SELECT * FROM table WHERE entry=6 AND user=u)
在另一方面,我得到一个感觉,有一些代数矢量问题潜伏以下表面(特别是对于问题二),但我似乎无法把头围住它。
欢迎任何想法!
感谢您的最后一个查询。我没有要求,但我需要的东西几乎完全一样。 – Honoki
不知道你从哪里得到的,但是在(1,2,5,6)中有条目根本不起作用,因为只有聚合函数在having子句中起作用。 – fancyPants
@fancyPants。 。 。谢谢。固定。 –