Удаление повторов ответа?

Andrey_P

Guest
Удаление повторов ответа?

PHP:
$query_agroup = mysql_query ("SELECT agroup_id, agroup FROM $server_table WHERE alet = '$alet'"); 
echo mysql_error(); 
while ($row_agroup = mysql_fetch_array($query_agroup)) {  
echo mysql_error(); 
printf ("<a href=\"?agroup_id=%s\"> %s </a><br>\n", $row_agroup["agroup_id"], $row_agroup["agroup"]); 
} 
else: 
print (" &nbsp; "); 
endif;
Скрипт выводит названия групп, подскажите как модифицировать так, чтобы они не повторялись.
Например он выводит
PPK
PPK
PPK
PPK
Pink Floid
а надо:
PPK
Pink Floid

--
Заранее спасибо
 

hussar

In code we trust!
Всем доброе время суток!
У меня встала подобная проблема, только мне надо удалить из базы все повторяющиеся значения, я использую вот такой код:
PHP:
$r=mysql_query("SELECT * FROM temp ");
	while($t=mysql_fetch_array($r)) {
		if (!isset($arr) || !in_array($t['id'], $arr))
		{
			$q=$t['q'];
			$a1=$t['a1'];
			$a2=$t['a2'];
			$a3=$t['a3'];
			$a4=$t['a4'];
			$id=$t['id'];
			$res=mysql_query("SELECT * FROM temp WHERE q='$q' AND a1='$a1' AND a2='$a2' AND a3='$a3' AND a4='$a4' AND id<>'$id'");
			while($tmp=mysql_fetch_array($res))
			{
				$arr[]=$tmp['id'];	
			}
		}
	}
	if (isset($arr)){
		foreach($arr as $v)
		{
			mysql_query("DELETE FROM temp WHERE id='$v'");	
		}
			
	}
Но мне кажется что это не правильно, хотя он и работает, и что есть боле красивое решение.

Всем заранее спасибо за советы!
 

render

Guest
delete from t1 where group_id in (select group_id from t1 alias1, t1 alias2 where alias1.group = alias2.group and alias1.group_id<alias2.group_id)

В том случае если MySQL поддерживает вложенные подзапросы.

Если нет, то твой способ самый подходящий или выкачивай более новую версию MySQL
 

ForJest

- свежая кровь
hussar
Вот пробуем
удаление дубликатов
MySQL удал* повтор*
 

hussar

In code we trust!
Спасибо за помошь, получилось, но я не понимаю как сделать так чтобы не пропадали остальные данные в таблице, т.е. помимо полей которые у меня есть в запросе (внизу) есть еще несколько полей по которым мне не надо производить сравнение, но в результате этих операций значения из тех полей пропадают.
PHP:
mysql_query("CREATE TEMPORARY TABLE tmp SELECT DISTINCT q, a1, a2, a3, a4 FROM temp") or die(mysql_error()."1");
	mysql_query("DELETE FROM temp"); //or die(mysql_error());
	mysql_query("INSERT INTO temp (q, a1, a2, a3, a4) SELECT * FROM tmp") or die(mysql_error()."2");
Каким образом можно обойти эту проблему.
Заранее спасибо!
 

ForJest

- свежая кровь
hussar
ALTER IGNORE TABLE my_tbl
ADD UNIQUE rip (a, b, c, <всё что нужно>);
ALTER TABLE my_tbl DROP INDEX rip;
 
Сверху