使用SQL的返回值作为另一个Query中的参数

时间:2014-06-09 12:45:49

标签: mysql sql database database-design

我正在使用MySQL并拥有以下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 对于从第一个查询返回的每个ID。

最好的方法是什么?可以在1份声明中完成吗?

修改

为了澄清,我还需要根据上面的第一个查询返回var1中的Table1

2 个答案:

答案 0 :(得分:1)

很多方法可以实现这一目标。

  • 使用in(如Linger的响应)
  • 使用存在
  • 使用联接(如下所示)

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

取决于索引,数据表设计/设置的数量。这三者中的任何一个都可能是" Best" 存在通常是最快的,如果您需要其他信息,连接可以解决某些问题。

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

答案 1 :(得分:0)

如何将两个查询合并为一个:

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