繁体   English   中英

在另一个where语句(子查询?)中使用一个sql查询的结果

[英]Use results from one sql query in another where statement (subquery?)

我看到许多类似的问题,但它们要么太复杂,以至于我听不懂,要么似乎并没有问同样的问题。

很简单:我有两列:用户(dmid)和下载(dfid)。

  1. 选择所有下载了特定文件的用户:

     SELECT DISTINCT dmid FROM downloads_downloads where dfid = "7024" 
  2. 使用上面的用户,找到他们全部下载的所有文件:

     SELECT dfid from downloads_downloads WHERE dmid = {user ids from #1 above} 
  3. 计算和排序dfid结果,因此我们可以看到每个文件收到了多少下载:

     dfid dl_count_field ---- -------------- 18 103 3 77 903 66 

我试图回答。

这似乎很近,但是MySql陷入困境,甚至在30秒后也没有响应-我最终重新启动了Apache。 而且,由于复杂的语句,我现在不介绍如何在不引起语法错误的情况下构造计数和顺序,它甚至可能不是正确的语句。

SELECT dfid from downloads_downloads WHERE dmid IN (
    SELECT DISTINCT dmid FROM `downloads_downloads` where dfid = "7024")
SELECT dfid,count(*) 
from downloads_downloads 
WHERE dmid IN (
    SELECT dmid 
    FROM downloads_downloads 
    where dfid = "7024"
)
group by dfid

或使用自我联接

select t1.dfid,count(*)
from downloads_downloads t1
inner join downloads_downloads t2
on t1.dmid = t2.dmid
where t2.dfid = "7024"

如果这花了太长时间,那么您可能需要发布一个解释计划(用谷歌搜索!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM