Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ELIMINAR Registros! SQL Server bajo condición ...

Estas en el tema de ELIMINAR Registros! SQL Server bajo condición ... en el foro de Bases de Datos General en Foros del Web. Lo que ocurre es lo siguiente: Tengo una base de datos con 17.000 registros en una misma tabla. Y me di cuenta que tengo registros ...
  #1 (permalink)  
Antiguo 01/04/2005, 08:46
 
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años
Puntos: 1
ELIMINAR Registros!

Lo que ocurre es lo siguiente:
Tengo una base de datos con 17.000 registros en una misma tabla. Y me di cuenta que tengo registros duplicados donde los registros tienen el mismo ID key y los mismos datos.
Lo que necesito es un script (SQL) que me elimine todos pero me deje uno.
Es decir, si tengo diez registros iguales, que elimine 9 y me deje uno.
Como se hace esto?
__________________
:serio: :adios:
  #2 (permalink)  
Antiguo 01/04/2005, 08:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 19 años, 3 meses
Puntos: 3
fijate si esto te puede ayudar

<?
// Realizar la conexión a la BD .. Seleccionar la BD a usar.
include("conex.php");
// Ejecutar la consulta para obtener los datos de la BD.
$resultado=mysql_query("SELECT id, titulo, precioventas, mensaje FROM usuarios");

// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
while ($row = mysql_fetch_array($resultado)){
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['id']."\">".$row['titulo']."<br>";
}

// Cerramos el formulario y ponemos nuestro botón de Submit.
echo "<input type=\"submit\" name=\"Submit\" value=\"Borrar\">";
echo "</form>";
?>

ahi va selecionando los mensaje que quieres borrar has los cambios en select en mi ejemplo yo pongo que me salga todos los titulos puedes hacerlo con los id o mensajes o con lo que gustas

espero haberte ayudado chau
  #3 (permalink)  
Antiguo 01/04/2005, 08:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 19 años, 3 meses
Puntos: 3
ah me falto la parte que los borra

procesar.php

<?
// Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
$lista=implode(',',$_POST['seleccion']);

// Y lo aplicamos al SQL correspondiente y ejecutamos la consulta.
include("conex.php");
mysql_query("DELETE FROM usuarios WHERE id IN(".$lista.")");

?>

suerte
  #4 (permalink)  
Antiguo 01/04/2005, 09:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Y de que Base de datos (RDBMS) estámos hablando? .. Si preguntas en el foro de "PHP" se suele asumir que usas "Mysql" .. pero no dés nada por supuesto; aclaraló

Deberías resolver el problema -sólo- con SQL .. y más si la condición ya la conoces. Dentro de SQL tienes hasta "condicionales" (hasta en Mysql aunque no sea típico verlo) ..

PHP está de más en este caso concreto para realizar ese proceso de "limpieza" bajo ciertas condiciones...

Muevo tu pregunta al foro de Base de datos para que te orienten al respecto.

Un saludo,

Última edición por Cluster; 01/04/2005 a las 09:27
  #5 (permalink)  
Antiguo 01/04/2005, 10:48
Avatar de mozka  
Fecha de Ingreso: junio-2004
Ubicación: México
Mensajes: 37
Antigüedad: 19 años, 11 meses
Puntos: 0
pensando que es SQLServer y que el borrado se va a realizar mediante el campo IDKey, el siguiente script te debera de servir

declare @total numeric, @contador numeric, @aBorrar numeric, @keyBorrar varchar

select distinct IDKey, count(*) rep, identity(numeric, 1, 1) contador into #temp from Tabla

set @total = @@rowcount
set @contador = 1

while @contador <= @total
begin
select @aBorrar = rep - 1, @keyBorrar = IDKey from #temp where contador = @contador
set rowcount @aBorrar
delete from tabla where IDKey = @keyBorrar
set rowcount 0
end
__________________
hola :adios:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:33.