选择ID在另一列MySQL中的项


Select items where ID present in another column MySQL

我有一个albums的表,每个专辑有一个ID

我也有一个reviews的表,每个评论都通过albumID列链接到相应的专辑。

我想知道如何选择ID在评论表中存在的所有专辑。

我正在考虑从评论栏中选择所有的albumId,然后做一个select where id in,但我觉得这将是非常低效的。

MySQL

Albums Table
- ID
Reviews Table
- ID
- albumID

期望结果:所有有评论的专辑。

下面是使用简单JOIN的一种方法。内部连接表示法将只包括存在于两个表中的记录。它允许您访问两个表中的数据,如果您也需要评论中的数据,这可能很有用。

Select * from albums A
inner join reviews R
 on A.ID = R.AlbumID

下一种方法通常是最快的,但您只能从相册中获取数据。这使用了所谓的关联子查询,通常是最快的方法。

SELECT * from albums A
where exists (Select 1 from reviews R where A.ID = R.albumID)

和第三种方法,但通常是最慢的…使用一个叫做IN()的概念。这里的子查询生成一个来自评论的ID列表,并且只显示该列表中的专辑。

Select * from albums where ID IN (SELECT albumID from Reviews)

这样可以:

select a.* from albums as a
inner join reviews as r
on r.albumID = a.ID