Sql 获取具有相同id且必须组合某些值的行
我有两张桌子,如下所示:Sql 获取具有相同id且必须组合某些值的行,sql,select,Sql,Select,我有两张桌子,如下所示: TableA ------------ a_id a_attribute TableB ------------ b_id b_attribute 数据: 我试图找出如何匹配它,如果b_id的b_属性值为1,2,3,它将匹配a_id 1,如果b_属性的值为4,5,6,它应该匹配a_id 2 在这种情况下,我希望输出为: b_id a_id 1 1 3 2 非常感谢您的帮助 如果共享属性的数量是固定的,则可能会连接属性列上的表,并根据
TableA
------------
a_id
a_attribute
TableB
------------
b_id
b_attribute
数据:
我试图找出如何匹配它,如果b_id的b_属性值为1,2,3,它将匹配a_id 1,如果b_属性的值为4,5,6,它应该匹配a_id 2
在这种情况下,我希望输出为:
b_id a_id
1 1
3 2
非常感谢您的帮助 如果共享属性的数量是固定的,则可能会连接属性列上的表,并根据计数进行过滤。比如:
SELECT b.b_id, a.a_id FROM TableA a
INNER JOIN TableB b ON a.a_attribute = b.b_attribute
GROUP BY a.a_id, b.b_id
HAVING COUNT(*) = 3
这将为您提供的示例数据提供正确的输出。请阅读
JOIN
和UNION
。您可能需要在这里同时使用这两个数据库。虽然这个问题并不真正需要,但指定您正在使用的DBMS(Postgres、Oracle等)总是很好的。请原谅我对这个主题的无知,但这是否意味着它将返回每个a_id和b_id,其中发现3行存在匹配症状?@user2989484是的。即使两个表中的一个表有三个以上的属性,它也只会返回正好有三个共享属性的行。好吧,尽管它很有帮助,但它并不能完全解决我的问题,因为我需要它是属性的组合(即1,2,3或4,5,6),并且将来可能用于三个以上(13,14,15,16).不过我很感谢你的帮助!
SELECT b.b_id, a.a_id FROM TableA a
INNER JOIN TableB b ON a.a_attribute = b.b_attribute
GROUP BY a.a_id, b.b_id
HAVING COUNT(*) = 3