2014-01-18 50 views
0

我有兩個表格:EventStory - 前者具有關於事件的信息,後者具有這些事件的故事文本。MySQL中的嵌套where子句

我可以得到所有涉及巴西從Event像這樣的事件story_id

SELECT @story_id := `story_id` FROM events 
    WHERE actor_id='Brazil'; 

然後我想用story_id我查詢Story。我會怎麼做?我能以某種方式嵌套它們嗎?

更新:我最終將story_id存儲在臨時表中而不是變量。 (新到MySQL,我不知道如何可變作品在這裏...)

CREATE TEMPORARY TABLE IF NOT EXISTS temp_table AS (SELECT story_id FROM events 
    WHERE actor_id='Brazil'); 

然後

SELECT * FROM stories, temp_table 
    WHERE stories.StoryID = temp_table.story_id; 

我會很感激這個解決方案任何評論!

回答

2

你能做到這一點,一個JOIN

SELECT @story_id := e.`story_id`, s.* FROM events e 
INNER JOIN stories s ON s.StoryId = @story_id 
    WHERE e.actor_id='Brazil'; 

所以對於s真正的原因的的e和'是確定你是從什麼選擇表。你可以做FROM eventsINNER JOIN stories,但是,這只是我用來避免輸入長表名的語法。你可能只是這樣做:

SELECT @story_id := events.`story_id`, stories.* FROM events 
INNER JOIN stories ON stories.StoryId = @story_id 
    WHERE events.actor_id='Brazil'; 

然而,正如你可能會注意到,它的長,不是那麼簡單。雖然它更容易理解。

+0

你能否解釋一下'e.'和's.'語法? – Heisenberg

+0

@Anh我編輯了我的答案來回答這個問題,基本上只是爲了避免輸入長表名。 – hichris123

+0

感謝您的回答!所以看起來MySQL變量確實可以存儲一個有價值的向量。爲什麼我不能'從SELECT#FROM story到哪裏StoryID = @ story_id'? – Heisenberg