我想扩展这个简单的子选择:
Select * from table1 where pkid in (select fkid from table2 where clause...)
上面的逻辑非常简单 - 在table1中获取所有行,其中pkid包含在具有where子句的子选择查询返回的子集中 . 它运作良好,因为只返回了1个字段 .
现在我想扩展一下 .
在表1中,我想返回结果,其中field1和field2以及field3在select(field1,field2,field3 from table2 where clause ...)
这怎么可能?
提前致谢 .
例 .
TABLE1
FIELD1 FIELD2 FIELD3
1 2 3
2 3 4
4 5 6
TABLE 2
2 3 4
4 5 6
我想返回2个结果 .
5 回答
如果我了解您的需求,您可以尝试:
就像马克指出的那样,你想做的是
INNER JOIN
.但是(这只是FYI,你绝对应该使用Marco的解决方案)它也可以简单地使用大括号 .
至少在MySQL中(这个问题不是用MySQL标记的吗?)
你可以使用临时表
对于大多数情况,请避免使用
IN
. 这是非常有限的 .在大多数情况下,我更喜欢使用JOIN .
(如有必要,确保过滤器使用
DISTINCT
或GROUP BY
返回c1, c2, c3
的唯一组合)你没有提到引擎,所以我假设SQL Server . 此查询将显示两个表上的内容