2015-05-27 53 views
0

我有一個表albums,每張專輯都有一個ID選擇ID出現在另一列的項目MySQL

我也有一個表reviews,每個評論通過列albumID列鏈接到相應的專輯。

我想知道如何選擇所有ID爲在評論表中存在的相冊。

我正在考慮從評論專欄中選擇所有albumId,然後做一個select where id in,但我覺得這樣做會非常低效。

這是在MySQL

Albums Table 
- ID 

Reviews Table 
- ID 
- albumID 

期望的結果:所有的相冊誰作出檢討。 (例如:所有專輯有自己的ID出現在評論表)

+0

嘗試發佈一些表格樣本數據和期望的輸出 – Sachu

+0

使用join或exists語句。 – xQbert

回答

3

下面是一個使用簡單連接的一種方法。內部連接符號將只包含兩個表中存在的記錄。它允許您訪問這兩個表中的數據,如果您也需要數據,則可能會有用。

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

我是一個很好的解釋吸盤;-) –

+0

現在,如果我只能splel ... – xQbert

+0

*哈哈!* - 我有點dyxlesxic自己;-) *有時*。 –

相關問題