我看到许多类似的问题,但它们要么太复杂,我无法理解,要么它们似乎问的不是同一件事.

很简单:我有两个专栏:用户(dmid)和下载(dfid).

  1. Select 下载特定文件的所有用户:

    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
    

My attempt at answering.

这似乎很接近,但MySql陷入困境,甚至在30秒后也没有响应——我最终重新启动了Apache.我现在不知道如何构造count和order by,而不会因为复杂的语句而出现语法错误,而且它甚至可能不是正确的语句.

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"

如果这需要太长时间,那么你可能需要发布一个解释计划(谷歌it!)

Mysql相关问答推荐

正在获取MySQL死锁,因为这个查询需要很长时间.

MariaDB字段+1

Python MySQL-无法从数据库中删除行

不分组寻呼

在MySQL中使用FIRST_VALUE()

无法确定查询逻辑

没有 ORDER BY 的查询性能很高,有 ORDER BY 的查询速度慢得像爬行一样

在 .NET 6 中使用 Dapper Framework 未能成功连接到 MySql

根据 JOIN 结果计算列中的值?

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

使用来自另一个表 mysql 的值将新行插入到表中

谁能帮我优化低性能的mysql查询

MySQL如何通过外键ID Select 多行?

在 MySQL 中转换 JSON 数组值

计算每个用户在第二个表中有多少条记录

查询以查找可用时隙

mysql错误:错误1018(HY000):无法读取'.'的目录(错误号:13)

脚本超时,如果要完成导入,请重新提交相同的文件,导入将恢复

MAMP mysql 服务器无法启动.没有mysql进程正在运行

MySQL中的base64编码