繁体   English   中英

使用联接或子查询的MySQL查询

[英]MySQL query with join or subquery

我有这样的架构和查询: http : //sqlfiddle.com/#!2/7b032/3

另外,我有以下查询:

SELECT COUNT(*) AS 'times', userid, name
FROM main
WHERE comedate <= DATE_SUB(CURDATE(),
                   INTERVAL 5 DAY)
GROUP BY userid ORDER BY times DESC LIMIT 0,2;

SELECT * FROM details WHERE 1;

通过比较两个表的userid列,我需要将它们连接起来。
我需要具有以下列的输出:
times, userid, name, age, location
还应考虑顺序,组别和限制。

如果您可以用JOIN编写一个查询,用子查询编写一个查询,我将很高兴。
我有一张60k的桌子,我将比较一下表演。

这个怎么样:

select x.times,
  x.userid,
  x.name,
  d.age,
  d.location
from 
(
  SELECT COUNT(*) AS 'times', userid, name
  FROM main
  WHERE comedate <= DATE_SUB(CURDATE(),
                     INTERVAL 5 DAY)
  GROUP BY userid 
) x
left join details d
  on x.userid = d.userid

参见带有演示的SQL Fiddle

编辑:

select x.times,
  x.userid,
  x.name,
  d.age,
  d.location
from 
(
  SELECT COUNT(*) AS 'times', userid, name
  FROM main
  WHERE comedate <= DATE_SUB(CURDATE(),
                     INTERVAL 5 DAY)
  GROUP BY userid
  ORDER BY times DESC 
  LIMIT 0,2
) x
left join details d
  on x.userid = d.userid

参见带有演示的SQL Fiddle

暂无
暂无

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

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