Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查找第一个表中与第二个表的行ID与max date匹配的行数_Mysql_Sql - Fatal编程技术网

Mysql 查找第一个表中与第二个表的行ID与max date匹配的行数

Mysql 查找第一个表中与第二个表的行ID与max date匹配的行数,mysql,sql,Mysql,Sql,我有两张桌子: 表1: 身份证 表2: 身份证 日期 我需要找到t1的行数,以便对于id为t1且与id为t2匹配的所有行,选择最大日期为t2的行 最终计数应仅包括满足t2的最大日期>从当前日期起30天的行 已尝试的查询: SELECT COUNT(*) FROM t1 INNER JOIN t2 ON t2.id = (SELECT id FROM t2 WHERE id = t1.id ORDER BY t2.date DESC LIMIT 1); SELECT COUNT(*)

我有两张桌子:

表1:

  • 身份证
表2:

  • 身份证
  • 日期
我需要找到t1的行数,以便对于id为t1且与id为t2匹配的所有行,选择最大日期为t2的行

最终计数应仅包括满足t2的最大日期>从当前日期起30天的行

已尝试的查询:

SELECT COUNT(*)
FROM t1 
INNER JOIN t2 
ON t2.id = (SELECT id FROM t2 WHERE id = t1.id ORDER BY t2.date DESC LIMIT 1);

SELECT COUNT(*)
FROM t2
INNER JOIN t1 ON t1.id=t2.id
GROUP BY t1.id, t2.date;
注意:据我所知,我尝试的查询与最终查询的外观没有任何关系。我尝试将问题分解为中间部分,例如尝试获取具有匹配ID t2的t1的所有行,然后尝试仅获取最新的一行,等等

我在考虑从第一个表中获取行时遇到了问题,但是有条件地将ID匹配到第二个表。我无法用SQL进行思考。

您可以使用
日期添加()函数
将日期添加到当前日期,通过
立即()获取日期。
函数:

select count(table1.id), max(table2.date) from table1
INNER JOIN table2 ON table1.id = table2.id
group by table2.date
having DATE(table2.date) > DATE_ADD(NOW(), INTERVAL 30 DAY)

您的日期列类型是什么?它是sql日期类型。您尝试过什么?如果你表现出你不能做某件事,而不是仅仅要求别人帮你做,那么你更有可能得到帮助。对不起,发布我尝试过的东西。MySQL或MS SQL Server?不要给未涉及的产品贴标签。。。
Select      Count(T1.id)
From        Table1 T1
            inner join
            Table2 T2
            On T1.id = T2.id
where       T2.Date = ( Select  Max(Date)
                        from    Table2
                        where   Date > DATEADD(dd,30,cast(getdate() as date)))