在查询的FROM部分中有一个子查询使用来自同一FROM表列表中另一个表的信息

时间:2013-05-03 16:52:03

标签: sql database

我不知道我是否已经解释得很好,但我认为我这里有一个奇怪的问题。

我需要将我的两个查询用作表格,例如

SELECT * 
FROM (SELECT ...) query1, 
     (SELECT * ... FROM ... WHERE query1.col = mycol) query 2,
     table1 table1,
     table2 table2,
WHERE query1.something = table1.something
AND query1.otherthing = query2.otherthing
AND query2.something = table1.something
AND query.otherthing = table2.otherthing

如果没有将query1再次作为子查询嵌入到query2中,是否可以这样?

1 个答案:

答案 0 :(得分:0)

只要子查询有一个共同的字段,就应该使用如下的连接。在这个例子中,确实应该存在任何这个子查询的废话,只是将表连接在一起并明智地使用WHERE子句和连接类型来获得所需的信息:

    SELECT foo2.A, foo2.B, bar2.C, bar2.D
FROM (
    SELECT A, B
    FROM foo
    ) AS foo2
INNER JOIN
    (
    SELECT A, C, D
    FROM bar
    ) AS bar2
ON foo2.A = bar2.A