如何建模这个相关子查询?

时间:2017-11-08 04:30:41

标签: mysql sql

因此,此查询返回此表

select * from players where username = 'weise03'

reportID username ign
992499   weise03  Weisey
992637   weise03  Weisey

使用此查询中的reportID,我可以运行

SELECT * FROM reports WHERE reportID = 992499
SELECT * FROM reports WHERE reportID = 992637


reportID username ign
992499   alphaas  Jester <-- I want this

reportID username   ign
992637   PorcoDiooo Cotton Mather <-- and this

我希望我能够按照

的方式做点什么
    SELECT *
FROM
(
    SELECT reportID
    FROM players
    WHERE username = 'weise03'
) AS t
JOIN
(
    SELECT *
    FROM reports
    WHERE reportID = t.reportID
) AS x ON t.reportID = x.reportID;

但是发现你不能在像这样的子查询中使用别名,所以就这样了。

我意识到我可以对第一个查询返回的每个reportID运行一个查询,但我想知道是否有更好的方法对此进行建模。如果没有更好的方法,我怎么能尽可能快地 ,而不添加额外的字段 ,因为将来某些命令可能需要数百个查询。

1 个答案:

答案 0 :(得分:2)

听起来像是想要加入

select r.* from reports r 
join players p on p.reportid = r.reportid
where p.username = 'weise03'