选择连接中的mysql子查询
Posted
技术标签:
【中文标题】选择连接中的mysql子查询【英文标题】:mysql subquery in select join 【发布时间】:2015-10-10 19:59:01 【问题描述】:我对以下语句有疑问:
SELECT SUM(foreseen_charges.commonCharge) as required, foreseen_charges.flatsId
LEFT JOIN (SELECT deposits.flatsId FROM deposits GROUP BY flatsId) deps
ON foreseen_charges.flatsId = deps.flatsId
FROM foreseen_charges GROUP BY foreseen_charges.flatsId
我总是收到这个错误:
您的 SQL 语法有错误;检查相应的手册 到您的 mysql 服务器版本,以便在 'LEFT 附近使用正确的语法 JOIN (SELECT deposit.flatsId FROM deposit GROUP BY flatsId) deps 在第 2 行打开 f'
谁能帮帮我?
最好的问候, 铯
【问题讨论】:
【参考方案1】:将 FROM 放在 LEFT JOIN
之前SELECT SUM(foreseen_charges.commonCharge) as required,
foreseen_charges.flatsId
FROM foreseen_charges
LEFT JOIN (
SELECT deposits.flatsId
FROM deposits
GROUP BY flatsId
) deps ON foreseen_charges.flatsId = deps.flatsId
GROUP BY foreseen_charges.flatsId
【讨论】:
请您指出为什么这样做可以使答案更有用。 @ShawnMehan 这是基本的加入。我认为我不应该解释为什么这会像 w3school 那样工作。 好吧,这就是我们在 SO 上所做的,帮助人们更好地编码。请参阅@redux 以获取更普遍有用的答案,该答案减少未来类似问题的数量,假设其他用户搜索和阅读....叹息....这是一个不同的问题。尽管如此,我不会对你投反对票,但 OP 应该将检查切换为 redux 答案恕我直言。【参考方案2】:你做事不正常。大体结构是:
SELECT (something) FROM table JOIN other-table ON table.var1=other-table.var2 WHERE situation
你正在这样做:
SELECT (something) LEFT JOIN table ON table.var1=other-table.var2 FROM other-table
在你声明两个表之前你不能加入,你不能关联 other-table 因为你还没有声明它。
不确定查询的目的是什么,但这应该可以解决您的语法错误:
SELECT SUM(foreseen_charges.commonCharge) as required, foreseen_charges.flatsId
FROM foreseen_charges
LEFT JOIN (SELECT deposits.flatsId FROM deposits GROUP BY flatsId) deps
ON foreseen_charges.flatsId = deps.flatsId
GROUP BY foreseen_charges.flatsId
【讨论】:
以上是关于选择连接中的mysql子查询的主要内容,如果未能解决你的问题,请参考以下文章