求集合中最大公共元素的SQL语句
我有一个类似
id contact value
1 A 2
2 A 3
3 B 2
4 B 3
5 B 4
6 C 2
现在我想获取给定联系人组的共同最大值的表格。 例如: 如果我的联系人集是 {A,B} 它将返回 3; 对于集合 {A,C} 它将返回 2 对于集合 {B} 它将返回 4
哪些 SQL 语句可以做到这一点?
I have a table like
id contact value
1 A 2
2 A 3
3 B 2
4 B 3
5 B 4
6 C 2
Now I would like to get the common maximum value for a given set of contacts.
For example:
if my contact set was {A,B} it would return 3;
for the set {A,C} it would return 2
for the set {B} it would return 4
What SQL statement(s) can do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个:
这是 MySQL 语法,可能因您的数据库而异。
HAVING
子句中的数字 (2) 是集合中元素的数量。Try this:
This is MySQL syntax, may differ for your database. The number (2) in
HAVING
clause is the number of elements in set.编辑:最大共同点
Edit: max common
大多数人会告诉您使用:
几个注意事项:
DISTINCT
是关键,否则您可能会有两行 t.contact = 'A'。COUNT(DISTINCT t.*)
的数量必须等于IN
子句中指定的值的数量我的首选是使用 JOIN:
这样做的缺点是您必须对每个条件(在本例中为联系人值)进行自联接(联接到同一个表)。
Most will tell you to use:
Couple of caveats:
DISTINCT
is key, otherwise you could have two rows of t.contact = 'A'.COUNT(DISTINCT t.*)
has to equal the number of values specified in theIN
clauseMy preference is to use JOINs:
The downside to this is that you have to do a self join (join to the same table) for every criteria (contact value in this case).