Mysql SQL查询,用于获取仅知道曲目id的唱片集信息

Mysql SQL查询,用于获取仅知道曲目id的唱片集信息,mysql,sql,Mysql,Sql,具有用于三个表的简单数据库表结构 artist, album, tracks 其中,表相册有一个外键,名为artist\u id,指向艺术家表中名为id的字段,表曲目有一个外键,名为album\u id,指向表album中的字段id。 表曲目对于每个记录都有一个唯一的id,名为track\u id,以及相册表的外键album\u id 从只知道曲目id开始,选择艺术家和专辑信息的查询看起来如何 我尝试了以下操作,但它返回多条记录,这是不对的 SELECT * FROM artist INNER

具有用于三个表的简单数据库表结构

artist, album, tracks
其中,表相册有一个外键,名为artist\u id,指向艺术家表中名为id的字段,表曲目有一个外键,名为album\u id,指向表album中的字段id。 表曲目对于每个记录都有一个唯一的id,名为track\u id,以及相册表的外键album\u id

从只知道曲目id开始,选择艺术家和专辑信息的查询看起来如何

我尝试了以下操作,但它返回多条记录,这是不对的

SELECT *
FROM artist
INNER JOIN albums ON artist.id = albums.artist_id
INNER JOIN tracks ON tracks.track_id = '4021'

显然缺少某些内容。

使用where to filter,并添加缺少的连接规范

SELECT *
FROM
artist
    INNER JOIN
albums
    ON artist.id = albums.artist_id
    INNER JOIN 
tracks
    ON tracks.album_id=albums.id
where tracks.track_id = '4021'

缺少在
tracks.album\u id=albums.id

SELECT *
FROM artist
INNER JOIN albums ON artist.id = albums.artist_id
INNER JOIN tracks ON tracks.album_id = albums.id 
      and  tracks.track_id = '4021' AND 

您确实应该使用
where
来限制数据,并且应该加入
join
on
s。难道不加入“on”吗?如果不是,您的意思是什么?上的
是如何连接数据的。
其中
是应该返回的数据。根据手册:
通常,ON子句用于指定如何联接表的条件,而WHERE子句限制要在结果集中包括哪些行。
-似乎可以使用“and”而不是WHERE语句。有什么不同?今天的发动机不会有什么不同,它们足够聪明,可以根据需要移动它。出于可读性的原因,我这样使用它。请参阅:在上面的查询中,返回了两个同名的列;艺人id和专辑id。有没有一种简单的方法可以让重新运行的列名以其表名为前缀?MySQL不太清楚,在SQL Server中,您需要键入每个字段别名,或者可以动态添加,但这是一个新的故事。