下面是一个示例表。我在表a和表b之间使用一个内部联接,只想从表a中选择与给定id的表b中的所有行相匹配的行。例如,我只想显示表a中的行,其中表b id为27和65,表a必须与表b中id为27和65的行有关系才能显示在结果中。
问:在这个例子中,如何创建这样的查询?
A B
----- -----
id id
name a_id
value
希望你能理解我上面的例子,任何帮助或输入都非常感谢,谢谢!
下面是一个示例表。我在表a和表b之间使用一个内部联接,只想从表a中选择与给定id的表b中的所有行相匹配的行。例如,我只想显示表a中的行,其中表b id为27和65,表a必须与表b中id为27和65的行有关系才能显示在结果中。
问:在这个例子中,如何创建这样的查询?
A B
----- -----
id id
name a_id
value
希望你能理解我上面的例子,任何帮助或输入都非常感谢,谢谢!
2条答案
按热度按时间pokxtpni1#
这里我的评论作为答案-看起来,它既适用于多个匹配项,也适用于混合结果(匹配项+附加行):
结果如下:
详见小提琴:http://sqlfiddle.com/#!18/aa6ec5/13/1号文件
2exbekwf2#
如果蒂龙78的建议是正确的,那就是暗中捅一刀。似乎,也许,是
HAVING
一些条件聚合将起作用:这是假设
a.id
是唯一的(它毕竟是一个id),但是这假设b.id
不是独一无二的;因为如果B.Id
是唯一的,那么这将(再次)只需要一个JOIN
:不过,前者的性能可能会(稍微)更好,因为它只需要在表中进行一次查找
B
,而不是2。