选择其他列MySQL中存在ID的项目

时间:2015-05-27 16:26:50

标签: php mysql sql

我有一张albums的表格,每张专辑都有ID

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

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

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

这是在MySQL

Albums Table
- ID

Reviews Table
- ID
- albumID

期望的结果:所有评论的专辑。 (例如:所有在评论表中显示其ID的专辑)

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

这样可行:

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