mysql - 对两列使用相同的 id 连接时出错 - MYSQL

标签 mysql sql join inner-join

出于某种原因,我无法让此连接工作。我正在查找的结果为“歌曲标题”、“流行者”、“录音标题”、“录制者”。

这是我的查询:

SELECT Song.title AS `Song Title`, 
PerfArtist.name AS `Made Popular By`, 
Recording.title AS `Recording Title`, 
PerfArtist.name AS `Recorded By`
FROM PerfArtist_Recording
INNER JOIN Recording ON PerfArtist_Recording.Recording_id = Recording.id
INNER JOIN Song_Recording ON Song_Recording.Recording_id = Recording.id
INNER JOIN Song ON Song_Recording.Song_id = Song.id, 
INNER JOIN PerfArtist ON MadePopularBy.PerfArtist_id = PerfArtist_id
INNER JOIN PerfArtist ON PerfArtist_Recording.PerfArtist_id = PerfArtist.id

我得到的错误是:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN PerfArtist ON MadePopularBy.PerfArtist_id = PerfArtist_id
     INNER ' at line 9

任何帮助将不胜感激。

最佳答案

SELECT Song.title AS 'Song Title', 
    PerfArtist1.`name` AS 'Made Popular By', 
    Recording.title AS 'Recording Title', 
    PerfArtist2.`name` AS 'Recorded By'
FROM 
    PerfArtist_Recording
INNER JOIN
    Recording ON PerfArtist_Recording.Recording_id = Recording.id
INNER JOIN 
    Song_Recording ON Song_Recording.Recording_id = Recording.id
INNER JOIN 
    Song ON Song_Recording.Song_id = Song.id 
INNER JOIN 
    PerfArtist perfArtist1 ON MadePopularBy.PerfArtist_id = perfArtist1.PerfArtist_id
INNER JOIN 
    PerfArtist perfArtist2 ON PerfArtist_Recording.PerfArtist_id = perfArtist2.PerfArtist.id

删除了一个杂散的冒号,用单引号替换了反引号,以澄清有关列名和别名的信息。

添加了 PerfArtist 的别名

关于mysql - 对两列使用相同的 id 连接时出错 - MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20025854/

相关文章:

php - 如何将表单中复选框的值保存到单个 MySQL 字段中?

sql - 插入和更新触发器

python - 运行 python manage.pysyncdb 时出错

mysql - 当我使用 mysql workbench 进行逆向工程时,外键消失

php - 如何使用php从mysql获取数据到www/data/文件夹保存为xls?

sql - 列表包含非聚合列

MySQL 选择查询解释

c# - 如何使用 C# 字典在 Dapper 中映射银行的 JSON?

mysql - mysql 中的子字符串。选择一些数据

mysql - 如何将多个详细信息行的列汇总到单个列中?