2015-08-15 55 views
0

所以我有2個表:檢索不存在錶行

健身房(ID *,名稱,類型)
gym_unlocked(ID *,gymID *用戶ID *)

我正試圖執行一個SQL查詢,如果它不存在於gym_unlocked表中,它將只從健身房表中檢索行。例如,如果我在健身房桌上有一排名爲「FirstGym」和「Strength」的類型,並且如果該健身房的ID與gym_unlocked表中的任何一行不匹配(假定該用戶ID是2然後它將從健身房表中檢索該行。

到目前爲止,我有:

SELECT  ID,name,type 
FROM   gym 
WHERE gym.id NOT IN gym_unlocked.gymID AND gym_unlocked.userID = 2 

但是它不工作,所以是他們的任何方式,我可以實現我所試圖做的?

回答

2

我不是那麼熟悉MySQL的語法,但它應該是這樣的:

SELECT ID,name,type 
FROM gym 
WHERE gym.id NOT IN 
(SELECT gym_unlocked.gymID 
FROM gym_unlocked 
WHERE gym_unlocked.userID = 2) 

我想您能收到相關gym_unlocked表的錯誤。您需要爲此表使用LEFT JOIN或使用SUBSELECT才能與該表進行連接

1
SELECT g.ID, g.name, g.type 
FROM gym g 
left join gym_unlocked u on g.id = u.gymID 
         AND u.userID = 2 
WHERE u.gymID is null