2014-06-09 106 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