Mysql 查找第一个表中与第二个表的行ID与max date匹配的行数
我有两张桌子: 表1: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(*)
- 身份证
- 身份证
- 日期
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)))