Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 选择元素列表,如果它们的日期相同,则选择最新的_Mysql_Date_Select - Fatal编程技术网

Mysql 选择元素列表,如果它们的日期相同,则选择最新的

Mysql 选择元素列表,如果它们的日期相同,则选择最新的,mysql,date,select,Mysql,Date,Select,我有那两张桌子 Period (idPeriod, startDate, endDate) Person (idPerson, name, idPeriod,...otherInfos) 我们可以让一个人在很多时间段准时到达。 我的实际查询是返回一个人的最新开始日期 SELECT * FROM person p INNER JOIN period per on per.idPeriod = org.idPeriod where per.endDate = (SELECT MAX(per.sta

我有那两张桌子

Period (idPeriod, startDate, endDate)
Person (idPerson, name, idPeriod,...otherInfos)
我们可以让一个人在很多时间段准时到达。 我的实际查询是返回一个人的最新开始日期

SELECT * FROM person p INNER JOIN period per on per.idPeriod = org.idPeriod
where per.endDate = (SELECT MAX(per.startDate) from per) group by name;
如何检索人员列表。如果此人存在不止一次,请返回具有最新开始日期的人

SELECT name, idPerson
FROM Person 
 INNER JOIN Period 
 ON Person.idPeriod = Period.idPeriod
WHERE Period.startDate = 
(
  SELECT MIN(startDate)
  FROM Period AS Per 
   INNER JOIN Person as P
   ON P.id = Per.id
  WHERE P.name = Person.name
)
试试这个:

SELECT p.name, p.idPerson, MAX(per.startDate) 
FROM person p LEFT JOIN period per on per.idPeriod = org.idPeriod
GROUP BY  p.name, p.idPerson

它起作用了,但是它没有考虑到如果一个人只在某个时期内存在@Moh,那么它在您的案例中是无效的,因为您没有将该时期添加到
时期
表中