我是法国人,英语不是很流利,所以我会尽量清楚.
我有'我的表',ID,CODE,value1,value2和Date
我试图获得每个唯一代码的最新日期,1代表CODE
有了这个请求它什么也没显示:
$sql = 'SELECT value1, value2,Date
FROM 'my table'
GROUP BY CODE
HAVING Date = MAX(Date)
ORDER BY CODE ASC';
Run Code Online (Sandbox Code Playgroud)
有人帮我吗?
谢谢.
编辑:
我的桌子是Geoloc
> ID IMEI Latitude Longitude Date
6 24047780 49.027063 1.147213 2014-01-02 11:19:45
8 24047780 48.738078 1.366940 2014-01-02 11:20:31
9 24048781 48.864715 2.350216 2014-01-02 12:23:12
10 24048781 48.8686132 2.3572024 2014-01-07 16:06:40
11 24048783 49.027063 1.147213 2014-01-07 16:07:45
Run Code Online (Sandbox Code Playgroud)
我想显示imei的最新结果.
EDIT2:即时通讯使用
$sql4 = 'SELECT `ID`, `IMEI`, `LATITUDE`, `LONGITUDE`, `DATE`
FROM (SELECT *,
IF(@lastId = @lastId:=IMEI, @Idx:=@Idx+1, @Idx:=0) rowNumber
FROM `Geoloc` l, (SELECT @lastId:=0, @Idx:=0) A
ORDER BY `imei` DESC, `date` DESC
) AS A
WHERE rowNumber = 0 ';
// on envoie la requête
$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql4.'<br>'.mysql_error());
//the script i use to display informations
while( $Geoloc = mysql_fetch_assoc($req4))
{
$array[] = "new google.maps.LatLng(".$Geoloc['Latitude']." , ".$Geoloc['Longitude'].") " ;
$marqueurs[] =
"// affichage du marqueur_".$i." - start
var marker_".$i."=new google.maps.Marker({position:".$array[$i].",});
marker_".$i.".setMap(map);
var infowindow_".$i." = new google.maps.InfoWindow({content:\"".$Geoloc['Date']." - ".$Geoloc['IMEI']." - \"});
google.maps.event.addListener(marker_".$i.", 'click', function() {infowindow_".$i.".open(map,marker_".$i.");});
// affichage du marqueur_".$i." - end \n
";
$i++ ;
}
Run Code Online (Sandbox Code Playgroud)
有了这个sql请求,lattude和经度没有显示,由aziz给出的sql请求,它们被显示,但是如果1个imei的2个最大日期相同,则显示两个
编辑3:没关系,这是CAPS的一个问题,谢谢你
试试这个:
SELECT t.*
FROM table1 t
JOIN (
SELECT MAX(`date`) as maxdate, code
FROM table1
GROUP BY code
) t1
ON t.code = t1.code AND t.`date` = t1.maxdate
ORDER BY code
Run Code Online (Sandbox Code Playgroud)
对于每个代码,您获取MAX日期,然后将此内部表与主表连接以获取所需的记录.
如果你的数据中有重复的代码对和maxdate,那么也要使用JOIN中的最大ID,如下所示:
SELECT t.*
FROM table1 t
JOIN (
SELECT MAX(`id`) as `id`, MAX(`date`) as maxdate, code
FROM table1
GROUP BY code
) t1
ON t.code = t1.code AND t.`date` = t1.maxdate AND t.`id` = t1.`id`
ORDER BY code
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |