目前我使用的查询:有没有更好/更有效的方法来执行此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