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中,您需要键入每个字段别名,或者可以动态添加,但这是一个新的故事。