如何将一个SQL SELECT语句连接到另一个?

时间:2014-09-12 01:55:09

标签: mysql

我试图在他们之间连接多个SELECT语句。即SELECT语句A具有将传递给SELECT语句B的数据。然后,SELECT语句B将具有将传递给SELECT语句C的数据。

请帮帮我。我是SQL的新手。

1 个答案:

答案 0 :(得分:1)

如果规范是“连接多个SELECT语句”,并且将从一个SELECT“返回”的数据“传递”到另一个SELECT,那么我认为使用内联视图(派生表)将符合规范。 (SELECT语句的结果通常可以代替表引用;这种结构在MySQL用语中称为“内联视图”或“派生表”。

SELECT b.id
  FROM ( SELECT a.id
           FROM ( SELECT t.id
                    FROM mytable t
                 ) a
       ) b

我们也可以使用子查询来返回集合

SELECT t.id AS mn
     , (SELECT t.id 
          FROM mytable t
         ORDER BY t.id DESC
         LIMIT 1
       ) AS mx
  FROM mytable t
 ORDER BY t.id ASC
 LIMIT 1

我们也可以在谓词中使用子查询

 SELECT t.id
   FROM mytable t
  WHERE t.id IN ( SELECT s.id 
                    FROM mytable s
                   WHERE s.id MOD 2 > 0
                )

也可以在内联视图之间使用JOIN操作,就像表之间的JOIN操作一样。我们通常在不需要时避免子查询和内联视图,因为它们可能会对性能产生重大影响,并且会增加不必要的复杂性。

请注意,我们可以使用以下查询获得与上述查询相同的结果,通常更有效:

SELECT t.id FROM mytable t

SELECT MIN(t.id) AS mn, MAX(t.id) AS mx FROM mytable t

SELECT t.id FROM mytable t WHERE t.id MOD 2

如果没有更详细的源数据规范,以及您想要返回的实际结果集,我们可能会提出各种可能的查询形式,并且很可能大多数这些形式都不适合您的实际用例。 / p>