目前我使用的查詢:有沒有更好/更有效的方法來執行此SQL查詢?
SELECT * from budget where CentreID = (SELECT CentreID from budget where BudgetID = "?");
它的工作,因爲它是,但我不知道是否有什麼辦法,使之更有效率,或者如果不使用連接在這種情況下不好的做法。
謝謝。
目前我使用的查詢:有沒有更好/更有效的方法來執行此SQL查詢?
SELECT * from budget where CentreID = (SELECT CentreID from budget where BudgetID = "?");
它的工作,因爲它是,但我不知道是否有什麼辦法,使之更有效率,或者如果不使用連接在這種情況下不好的做法。
謝謝。
如果您的查詢工作,我認爲你的子查詢只返回一行。這意味着一個budgetID對應於一個且只有一個centerID。 如果是這樣的話,你可以使用此查詢:
SELECT * from budget where BudgetID = "?";
如果budgetID可以被分配給多個centerID時,您的查詢應該是這樣的:
SELECT * from budget where CentreID IN
(SELECT CentreID from budget where BudgetID = "?");
希望這有助於
在我的原始文章中使用這些查詢有沒有什麼優點? – pyy 2014-10-09 09:11:25
第一個查詢可能會更快,因爲它會刪除子查詢。 – 2014-10-09 09:54:41
您可以使用此查詢:
SELECT * from budget where CentreID IN (SELECT CentreID from budget where BudgetID = "?");
OR
SELECT a.*
from budget as a
JOIN
(
SELECT CentreID
from budget
where BudgetID = "?"
) as b ON a.CentreID = b.CentreID
是否有任何特殊原因使用這些查詢中的每一個,例如速度或最佳實踐? – pyy 2014-10-09 08:55:35
我真的懷疑,單個值子查詢會比JOIN慢。我的投票是使用你更舒適的方式。 – 2014-10-09 08:49:15