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

标签 mysql sql 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"

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

关于mysql - 在另一个 where 语句(子查询?)中使用一个 sql 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779338/

相关文章:

mysql - 并发编辑闭包树层次结构时出现死锁

sql - 逆透视特定表中的多个列

mysql - 重新评估每个 INSERT 的 MySQL 子查询

mysql - 在 WHERE 中无效使用组函数 SUM()

php - mysql子查询返回错误

php - 我的 while 循环有问题吗?我的代码语法?是不是太多了?

mysql - 删除列中除前 7 个值之外的值

java - 在Java中,Spring无需任何脚本即可维护数据库

sql - 连接字符串

sql - 权限问题阻止数据库访问