13. august 2006 - 07:40
Der er
16 kommentarer og 1 løsning
slet alt som ikke kommer med distinct
Jeg skal ha slettet alle dem som IKKE kommer frem når jeg bruger : "SELECT DISTINCT email, remote FROM ehk_spam;" Jeg har prøvet med : "DELETE FROM ehk_spam WHERE email, remote NOT IN (SELECT DISTINCT email, remote FROM ehk_spam);" men det virker ikke :( CREATE TABLE `ehk_spam` ( `id` int(11) unsigned NOT NULL auto_increment, `email` varchar(70) default NULL, `remote` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
13. august 2006 - 16:15
#1
SELECT DISTINCT returnerer alt bare uden duplikater DELETE WHERE IN SELECT DISTINCT bør vel derfor slette alt jeg gætter på at du vil af med duplikater - korrekt ? og så er spørgsmålet - hvis 2 rækker er duplikater hvilken af dem skal så slettes ?
13. august 2006 - 16:41
#2
Slet duplikater JA. Altså.. der kan godt være 100 ens "remote" hvis ikke "email" er den samme.. eller omvendt.. og den skal slette (id, email, remote)
13. august 2006 - 16:44
#3
hvis jeg bare fyre den af sådan : "SELECT DISTINCT email, remote FROM ehk_spam;" så er det hvad jeg skal bruge.. alt andet skal slettes..
13. august 2006 - 20:16
#4
ide: DELETE FROM ehk_spam es1 WHERE es1.id <> (SELECT MAX(es2.id) FROM ehk_spam es2 WHERE es1.email = es2.email AND es1.remote = es2.remote)
13. august 2006 - 20:17
#5
anden ide: INSERT INTO ny_ehk_spam SELECT MAX(id),email,remote FROM ehk_spam GROUP BY email,remote
13. august 2006 - 21:03
#6
Ja syntes ikke jeg kan få den til at virke.. og den med en ny table.. er ikke nogle god ide, for så skal jeg lave en ny table hver gang jeg poster.. men det kan måske laves lidt som : SELECT MAX(id) AS nid FROM ehk_spam GROUP BY email, remote DELETE FROM ehk_spam WHERE id NOT IN (nid,nid,nid,nid) bare på en mere smart måde??
13. august 2006 - 21:22
#7
Måske kan det gøres bedre et helt andet sted.. Jeg har nogle checkbox som har de id som skal flyttes til en spam table.. og det gør jeg på den her måde: $varID = "12,33,48,56"; // <- id fra checkbox "INSERT INTO ehk_spam (email, remote) SELECT email, remote FROM ehk_email WHERE ehk_email.id IN (".$varID.");" "DELETE FROM ehk_email WHERE id IN (".$varID.");" Det er så her jeg vil ha slettet dem som duplikate.. CREATE TABLE `ehk_email` ( `id` int(11) unsigned NOT NULL auto_increment, `date` int(11) default '0', `name` varchar(150) default NULL, `email` varchar(70) default NULL, `subject` varchar(150) default NULL, `message` text, `remote` varchar(100) character set latin1 collate latin1_bin NOT NULL default '', `visited` int(1) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
13. august 2006 - 21:34
#8
hvad fejl får du på den DELETE WHERE id <> SELEXT MAX ? og hvilken MySQL version kører du ?
13. august 2006 - 21:38
#9
1064 marker : WHERE es1.id <> (SELECT MAX(es2.id) FROM ehk_spam es2 WHERE es1.email = es2.email AND es1.remote = es2.remote)
13. august 2006 - 21:39
#10
mysql 4.1.7 php 4
13. august 2006 - 22:14
#11
hm - jeg kan heller ikke få den delere til at virke men så udfør SELECT id FROM ehk_spam es1 WHERE es1.id <> (SELECT MAX(es2.id) FROM ehk_spam es2 WHERE es1.email = es2.email AND es1.remote = es2.remote) gem resultat i en varabel x og udfør DELETE FROM ehk_spam WHERE id IN (x)
13. august 2006 - 23:25
#12
øhh du mener vel : SELECT MAX(id) AS nid FROM ehk_spam GROUP BY email, remote DELETE FROM ehk_spam WHERE id IN (nid) Den her kommer bare med id 1,2,3,4.. SELECT id FROM ehk_spam es1 WHERE es1.id <> (SELECT MAX(es2.id) FROM ehk_spam es2 WHERE es1.email = es2.email AND es1.remote = es2.remote)
13. august 2006 - 23:27
#13
selfølige.. NOT DELETE FROM ehk_spam WHERE id NOT IN (nid)
13. august 2006 - 23:50
#14
hvad er hurtigst at bruge: mysql_fetch_array() eller mysql_fetch_assoc() arne_v du må godt smaide et svar..
13. august 2006 - 23:56
#15
umiddelbart vil jeg tro at: 1. mysql_fetch_array med MYSQL_NUM 2. mysql_fetch_array med MYSQL_ASSOC og mysql_fetch_assoc 3. mysql_fetch_array med MYSQL_BOTH og mysql_fetch_array default men jeg tror ikke at forskellen kan måles !
13. august 2006 - 23:57
#16
og et svar
14. august 2006 - 00:05
#17
Mange tak for hjælpen
Computerworld tilbyder specialiserede kurser i database-management