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

我还有一个reviews表,每个评论通过albumID列链接到相应的相册。

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

我当时正在考虑从评论列中选择所有albumId,然后执行select where id in,但我觉得这样效率很低。

这是在MySQL中

Albums Table
- ID

Reviews Table
- ID
- albumID


预期结果:所有具有评价的相册。 (例如:“评论”表中显示其ID的所有相册)

最佳答案

这是使用简单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)

08-19 04:32