SQL查询具有多个匹配行的表上的连接

时间:2011-10-11 02:42:31

标签: sql join

编辑:我最初的描述不是很清楚,所以让我重新开始:

我有一个表x,其中包含列a,b和c,我想查询表y中的内容,其中ya = xa和表x中有一行,其中xb =(arg1)AND xc =(arg2)并且另一行存在于x中,其中xb =(arg3)和xc =(arg4)

因此传入值(3,4,6,12)会在此测试用例中返回a1。希望能够解决问题。

|-------|----------|----------|
|   a   |     b    |     c    |
|-------|----------|----------|
|   1   |     3    |     4    |
|   1   |     6    |     12   |
|   2   |     6    |     33   |

3 个答案:

答案 0 :(得分:3)

这听起来像父母之间的基本1对多(1:M)联接 - >子表关系。如果是这样,基本的INNER JOIN将返回父表和子表之间的所有匹配行。父列(如果包含在SELECT子句中)将对子表中的每个匹配行重复。

父级和子级之间的LEFT OUTER JOIN将返回父级的所有行以及子级的匹配行。如果子表中缺少ID值,则通常返回NULL值来代替任何数据。

希望这有帮助。

答案 1 :(得分:1)

Select *
  from y
 where exists( select *
                 from x
                where y.a = x.a
                  and x.b = 3
                  and x.c = 4 )
   and exists( select *
                 from x
                where y.a = x.a
                  and x.b = 6
                  and x.c = 12 )

答案 2 :(得分:0)

左加入......?

你问的问题看起来很简单 - 你能提供一些细节(表格模式等),以便我们更有帮助吗?