我有一个MySQL查询问题。我建立了一张跟踪高中足球比分的桌子。它看起来像这样:选择MySQL CASE语句
CREATE TABLE `games` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`home_team` int(11) NOT NULL,
`visitor_team` int(11) NOT NULL,
`home_score` tinyint(4) NOT NULL,
`visitor_score` tinyint(4) NOT NULL,
`quarter` tinyint(4) NOT NULL,
`week` tinyint(2) NOT NULL,
`game_date` date NOT NULL,
`game_time` time NOT NULL,
`complete` tinyint(4) NOT NULL DEFAULT '0',
`stadium_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=151;
我正在做的查询使用团队的id进行比较。我想要检索给定团队id唯一击败的团队的id值。这是我的查询到目前为止。
SELECT
CASE
WHEN games.home_team != ? AND (games.home_score > games.visitor_score) THEN games.home_team
WHEN games.visitor_team != ? AND (games.home_score < games.visitor_score) THEN games.visitor_team
END AS id, teams.class_id, classes.name
FROM games
INNER JOIN teams ON id = teams.id
INNER JOIN classes ON teams.class_id = class.id
WHERE games.complete = 1
当我运行在PHP MyAdmin此查询我得到以下错误:
#1052 - Column 'id' in on clause is ambiguous
我使用的PDO的execute()这样的代表队ID值?因为我将CASE语句的结果分配给了id,所以我可以用它来加入团队表。有人能指出我正确的方向来解决这个错误吗?先谢谢你。
不能在'ON'或中引用列别名'WHERE'条款。你将不得不重复'CASE'表达式。 – eggyal