2014-06-09 72 views
0

我使用MySQL,并具有以下SQL表使用从SQL返回值作为另一个查询参数

Table1 
id | var1 | var2 | var3 

Table2 
id | var4 | var5 

我运行查询

SELECT id, var1 from Table1 where var3 = X

这将返回多个值。

然后我想

SELECT var4 from Table2 where id = Y 每个已从第一个查询返回的IDS。

解决此问题的最佳方法是什么?它可以在1声明中完成吗?

编辑:

为了澄清我还需要从var1Table1要返回按高于第一查询。

回答

1

很多方法可以做到这一点。

  • 使用In(如在灵儿的效应初探)
  • 使用存在
  • 使用连接(如下)

SELECT a.id, var4, B.Var1 
FROM Table2 A 
INNER JOIN Table1 B 
    on A.ID = B.ID 
WHERE var3 = X 
and ID = Y 

根据索引,数据表的设计/设置量。这三个人中的任何一个都可能是“最佳” 存在通常是最快的,如果您需要其他信息,则可以加入解决某些问题。

上阅读了连接:http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

+0

不,我是:P改正了。 – xQbert

+0

谢谢xQbert。我已经尝试过,它几乎可以提供我需要的东西。为了清晰起见,我编辑了我的问题。我还需要返回第一个查询的结果。 –

+0

看到并更新。 – xQbert

0

如何这两个查询组合成一个:

SELECT var4 
FROM Table2 
WHERE id IN 
(
    SELECT id 
    FROM Table1 
    WHERE var3 = X 
) 
+0

我觉得OP想要的“最佳途径”。 – Strawberry

+0

谢谢Linger,我现在正在测试它。你认为什么更好@Strawberry?谢谢 –

+0

@RíomhaireSELECT b.var1,a.var4 FROM table2 a JOIN table1 b ON b.id = a.id WHERE y.var3 ='x'; – Strawberry