首页 > 解决方案 > 有没有办法使用不同的 ID 别名获取 MySQL 记录

问题描述

我正在尝试使用不同的别名获取记录,但它们是相关的。

我使用的服务器是 WAMP。我已成功将我的项目/脚本连接到 PhpMyAdmin 数据库,并且可以使用一些查询在我的 PHP 文件中看到一些记录并成功插入。

但是,当我尝试使用不同的别名获取记录时,我收到一条错误消息:“MySQL 说:#1066 - Not Unique table/alias:'teams'”

您能否解释一下发生了什么,因为当我在数据库上检查这些记录的 ID 时,它们显示它们正在连接/从另一个表中提取记录。

以下是我的 MySQL 查询,我在其中尝试了多次更改,但每次尝试后都没有成功:

SELECT DISTINCT fixtures.fixture_id, fixtures.fixture_date,
        fixtures.fixture_time, fixtures.home_teamID, 
        fixtures.away_teamID, fixtures.comp_id 
From fixtures 
    JOIN teams ON fixtures.home_teamID = teams.team_id 
    JOIN teams ON fixtures.away_teamID = teams.team_id 
    JOIN competitions ON fixtures.comp_id = competitions.comp_id 
ORDER BY fixture.id ASC

来自查询的错误消息指出:

SELECT DISTINCT fixtures.fixture_id, fixtures.fixture_date, 
        fixtures.fixture_time, fixtures.home_teamID, 
        fixtures.away_teamID, fixtures.comp_id 
From fixtures 
    JOIN teams ON fixtures.home_teamID = teams.team_id 
    JOIN teams ON fixtures.away_teamID = teams.team_id 
    JOIN competitions ON fixtures.comp_id = competitions.comp_id 
ORDER BY fixture.id ASC 
LIMIT 0, 25

请向我解释我做错了什么,请注意我是使用 PHP 和 MySQL 的这个平台的新手。提前致谢。

标签: phphtmlmysqlwamp

解决方案


您加入了两次“团队”,因此当您提到“团队”时,它不知道您是指在 home_teamID 上加入的第一支球队还是在 away_teamID 上加入的第二支球队。

您可以通过给每个连接一个不同的名称来解决此问题,如下所示:

SELECT DISTINCT fixtures.fixture_id, fixtures.fixture_date,
        fixtures.fixture_time, fixtures.home_teamID, 
        fixtures.away_teamID, fixtures.comp_id 
From fixtures 
    JOIN teams AS hometeams ON fixtures.home_teamID = hometeams.team_id 
    JOIN teams AS awayteams ON fixtures.away_teamID = awayteams.team_id 
    JOIN competitions ON fixtures.comp_id = competitions.comp_id 
ORDER BY fixture.id ASC

推荐阅读