我有两个表:Event
和Story
- 前者有关于某个事件的信息,而后者有这些事件的故事文本。
我可以从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;
我很感激对此解决方案的任何评论!
答案 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';
因此s
和e
的原因是要确定您选择的是哪些表格。你只能做FROM events
和INNER JOIN stories
,但这只是我用来避免输入长表名的语法。你可以这样做:
SELECT @story_id := events.`story_id`, stories.* FROM events
INNER JOIN stories ON stories.StoryId = @story_id
WHERE events.actor_id='Brazil';
但是,正如您可能已经注意到的那样,它更长,而不是那么简单。虽然它更容易理解。