2013-06-29 2 views
0

я получил таблицу, содержащую ID, Names, message, and time, я хочу, чтобы выбрать из таблицы только одно сообщение запроса из каждого идентификатора, в настоящее время я выбираю все сообщения, это мой кодPHP - как выбрать из таблицы один запрос

$query= mysql_query("SELECT * FROM `table` ORDER BY `time`")or die(mysql_error()); 
while($arr = mysql_fetch_array($query)){ 
$num = mysql_num_rows($query); 
$msg = $arr['message']; 
echo '</br>'; 
echo $msg; 
} 

Это показывает все сообщения, упорядоченные по времени. Есть ли способ выбрать только один запрос из каждого идентификатора?

Спасибо,
Клаус

ответ

3

Если вы хотите o олько одно сообщение вы можете использовать LIMIT как этот

SELECT * FROM table ORDER BY time LIMIT 1 

Или, если вы хотите только одно сообщение от некоторого идентификатора, то вы можете использовать GROUP BY

SELECT * FROM table ORDER BY time GROUP BY id 
+0

Спасибо !!!!! Действительно, 'GROUP BY' был полезен, спасибо. –

0

Конечно, довольно просто

Это будет получать все сообщения с учетом ID:

$id = 10 //Get your id in any way you need 
$query= mysql_query("SELECT `message` FROM `table` WHERE `ID` = $id")or die(mysql_error()); 

while($arr = mysql_fetch_array($query)){ 
    $num = mysql_num_rows($query); 
    $msg = $arr['message']; 
    echo $msg; 
} 

и это будет получать только первое сообщение с учетом ID

$id = 10 
$query= mysql_query("SELECT `message` FROM `table` WHERE `ID` = $id LIMIT 1")or die(mysql_error()); 

$row = mysql_fetch_array($query)); 
if($row){ 
    $msg = $row['message']; 
    echo $msg; 
}else{ 
    echo 'no messages for id '.$id; 
} 
+0

Здесь Вы писали идентификатор в переменной, но мне нужно показать с каждого id –

+0

Извините, я, вероятно, неправильно понял ваш вопрос, поэтому вы хотите отображать только одно сообщение для каждого ID в таблице? у таблицы есть несколько сообщений на ID? –

+0

Спасибо, что пытались мне помочь, «GROUP BY» - это то, что мне нужно. Спасибо –

Смежные вопросы