mysql - 如何告诉 SQL 使用另一个表作为输入值来运行命令?

标签 mysql sql for-loop mariadb

我正在尝试构建一个查询,该查询将显示数据库中每个团队的得分(无论如何作为开始)。我有两张表,一张包含球队列表,一张包含比赛,格式为

周|主队|客队|主场得分|客队得分|结果|比赛ID

结果可以是 A(客场获胜)、H(主场获胜)或 D(平局)。我可以使用

轻松找到给定团队的积分
SELECT
(SELECT COUNT(matches.Result)*3 FROM matches WHERE (HomeTeam='Arsenal' AND Result='H') OR (AwayTeam='Arsenal' AND Result='A')) +
(SELECT COUNT(matches.Result) FROM matches WHERE (HomeTeam='Arsenal' OR AwayTeam='Arsenal') AND Result='D');

我想做的是:

FOR EACH teams.Team in teams
SELECT
(SELECT COUNT(matches.Result)*3 FROM matches WHERE (HomeTeam=Team AND Result='H') OR (AwayTeam=Team AND Result='A')) +
(SELECT COUNT(matches.Result) FROM matches WHERE (HomeTeam=Team OR AwayTeam=Team) AND Result='D');

不幸的是,这不起作用,我不太明白为什么。我做错了什么?

最佳答案

简单使用子查询:

SELECT teams.Team,
((SELECT COUNT(matches.Result)*3 FROM matches WHERE (HomeTeam=teams.Team AND Result='H') OR (AwayTeam=Team AND Result='A')) +
(SELECT COUNT(matches.Result) FROM matches WHERE (HomeTeam=teams.Team OR AwayTeam=teams.Team) AND Result='D')) as Points

关于mysql - 如何告诉 SQL 使用另一个表作为输入值来运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27453135/

相关文章:

C 程序 - 在循环期间组合 2 个字符串

arrays - 数组元素的 Verilog OR

mySQL 触发器,记录从特殊访问表中的表访问数据的时间和内容

mysql - 错误 SQLSTATE [HY093] : Invalid parameter number: number of bound variables does not match number of tokens

php - 在 wordpress single.php 中调用特定行

Mysql 左外连接不包括左表中的所有记录

mysql - SQL 替换值通配符

mysql - 基于子查询的SQL查询。检索数据>阈值的交易

arrays - 将 for 循环的输出存储到数组或变量中

mysql - 什么是二级 SQL 注入(inject)