1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Daten mit dem INSERT Befehl randomisiert in Tabelle abspeichern

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von sflor, 12 Juni 2018.

  1. sflor

    sflor Neuer Benutzer

    Hallo zusammen,

    ich benötige Hilfe beim Erstellen von Daten auf einem MySQL-Server, und zwar:

    Sollen nach jeder einzelnen Befüllung der Tabelle Emails mit der einzigen Spalte "Email-Adresse" alle Zeilen dieser Spalte, ergo alle Email-Adressen "durcheinander" geworfen werden, sprich randomisiert werden. Und dies nicht bei der Ausgabe der Daten, sondern bei der Datenbankstruktur selbst. Sinn und Zweck dessen ist es, dass man keine Rückschlüsse ziehen kann, welche Email-Adresse zu welchem Zeitpunkt in die Tabelle eingetragen wurde mit dem INSERT Befehl. Leider finde ich im Internet nur Möglichkeiten, wie man die Daten randomisiert ausgibt. Nicht jedoch, wie man selbige randomisiert abspeichert.

    Vielen Dank schon einmal im Voraus,

    Lg Tim
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Die Inhalte von Tabellen sind per se nicht sortiert, es handelt sich nur um Mengen. Aber ich versteh Dein Anliegen...

    Code:
    test=# create table email(email text);
    CREATE TABLE
    test=*# insert into email select 'email' || s::text || '@maildomain' || s::text || '.tld' from generate_Series(1,10) s;
    INSERT 0 10
    test=*# select * from email ;
              email           
    --------------------------
     email1@maildomain1.tld
     email2@maildomain2.tld
     email3@maildomain3.tld
     email4@maildomain4.tld
     email5@maildomain5.tld
     email6@maildomain6.tld
     email7@maildomain7.tld
     email8@maildomain8.tld
     email9@maildomain9.tld
     email10@maildomain10.tld
    (10 Zeilen)
    test=*# with tmp as (delete from email returning email) insert into email select * from tmp order by random();
    INSERT 0 10
    test=*# select * from email ;
              email           
    --------------------------
     email2@maildomain2.tld
     email4@maildomain4.tld
     email10@maildomain10.tld
     email9@maildomain9.tld
     email5@maildomain5.tld
     email6@maildomain6.tld
     email1@maildomain1.tld
     email3@maildomain3.tld
     email7@maildomain7.tld
     email8@maildomain8.tld
    (10 Zeilen)
    
    test=*#
    

    Andreas
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden