【问题标题】:Select Join two tables in mysql with a count/group on both选择在 mysql 中加入两个表,两者都有一个计数/组
【发布时间】:2016-01-27 08:03:29
【问题描述】:

我只是在学习如何从带有 where 子句的两个表中进行选择,以使用一个字段匹配记录。到目前为止,我可以在 OR 另一个表上使用组/计数来做到这一点,例如

Select count(*),t1.*,t2.all 
from t1,t2 
where t1.Name=t2.name 
group by T1.date 
having count(*)>1

Select count(*),t1.*,t2.all 
from t1,t2 
where t1.Name=t2.name 
group by T2.order 
# having count(*)>1

但我不能在两者都>1(或我选择的任何其他#)的情况下这样做。

我试着做 table.count(*) 例如

Select t1.count(*),t1.*,t2.all 
from t1,t2 
where t1.Name=t2.name 
group by T1.date 
having count(*)>1

但是mysql会抛出一个错误。本质上,我想在表格之间给出各种计数要求以获取报告,只有一个计数不起作用。

这是一个 sql fiddle,其中包含来自 table1 的计数查询,来自 table2 的计数并寻找一个从两者都计数的一个以及一个在 Table2 中获取所有记录的一个,其中 Table1 计数 >(sqlfiddle 中的注释)

http://sqlfiddle.com/#!9/c00d2/6

【问题讨论】:

  • 作为一项更新以使生活更轻松,我在 Table2 中运行并存储了计数,因此我可以查询这些,但很高兴知道这对未来的用户是否可行。
  • 您可能想在您的问题中加入一些示例数据和所需的结果。正如所写,很难理解您的要求。使用 count 等聚合方法时,您应该定义要聚合的字段。 Mysql 比其他数据库稍微宽松一些,并且通常允许一些带有意外结果的语法。
  • 正如@sgeddes 明智的建议,给一个sqlfiddle之类的,这样我们就可以优化这个
  • @sgeddes 感谢并根据您的建议添加

标签: mysql join count


【解决方案1】:

您应该阅读JOIN 并避免使用FROM t1, t2

所以你的最后一个查询写得正确我猜应该是这样的:

SELECT count(t1.id),
     t1.*,
     t2.all 
FROM t2
LEFT JOIN t1 
ON t1.Name=t2.name 
GROUP BY T1.date 
HAVING count(t1.id)>1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2017-03-16
    • 2018-05-11
    相关资源
    最近更新 更多