嵌套在MySQL中的where子句

时间:2014-01-18 02:47:41

标签: mysql

我有两个表:EventStory - 前者有关于某个事件的信息,而后者有这些事件的故事文本。

我可以从story_id获取涉及巴西的所有Event个事件,如下所示:

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

然后我想使用我得到的Story来查询story_id。我该怎么办?我能以某种方式筑巢吗?

更新:我最终将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;

我很感激对此解决方案的任何评论!

1 个答案:

答案 0 :(得分: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';

因此se的原因是要确定您选择的是哪些表格。你只能做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';

但是,正如您可能已经注意到的那样,它更长,而不是那么简单。虽然它更容易理解。