Visualizzazione risultati 1 fino 5 di 5

Discussione: [SQL] Eliminare dati tabella con ricerca parziale

  1. #1
    Guest

    Predefinito [SQL] Eliminare dati tabella con ricerca parziale

    Premetto che non ho mai avuto a che fare con la Sintassi SQL

    Devo eliminare in modo molto massiccio un sacco di record da una tabella che sono superflui, occupando davvero tanto spazio, forse MB.

    I dati li trovo facendo questa query:
    Codice:
    SELECT *  FROM `phpbb_posts_text` WHERE `post_subject` LIKE 'Re:%'
    Siccome Io e SQL non andiamo molto d'accordo ho pensato, per intuito, di eseguire una Query del genere per elimininare da post_subject SOLO i recorda, che hanno all'inizio "Re:"
    Codice:
    DELETE FROM `phpbb_posts_text` WHERE `post_subject`='Re:%'
    La sintassi è giusta? Devo togliere gli apici?

    Scusate la mia ignoranza ma non ci ho mai lavorato



    EDIT: Allora, sono riuscito a cancellare i dati usando questa query:

    Codice:
    DELETE FROM ip_posts_text WHERE post_subject LIKE 'Re: %'
    Il problema è che mi cancella tutti i record della tabella, non solo post_subject.

    Posso fare in modo di svuotare SOLO post_subject lasciando integre le altre?
    Ultima modifica di jcdesign : 14-12-2008 alle ore 01.43.37

  2. #2
    Guest

    Predefinito

    Non penso di aver capito bene, tu vuoi cancellare interi record o solo un campo di essi?
    Cioè, eseguendo l'ultima query che hai postato, cancelli correttamente tutti i record che come post_subject hanno "Re: %".
    Tu cosa vuoi fare esattamente?
    Vuoi mantenere tutti i record ma cancellare i campi post_subject? (cosa che mi pare molto insensata quanto inutile)


    ciao!

  3. #3
    Guest

    Predefinito

    Allora, Grazie Debug per la risposta, mi scuso per non essere stato subito comprensibile. Cerco di spiegarmi meglio con un esmepio grafico.

    Ho una struttura del genere nel DB:


    Come vedi sono presenti diversi campi che sono:

    post_id | bbcode_uid | post_subject | post_text | post_text_compiled | edit_notes

    Con la query che ho utilizzato io:
    Codice:
    DELETE FROM ip_posts_text WHERE post_subject LIKE 'Re: %'
    Mi elimina TUTTI i records da TUTTI i campi in cui post_subject abbia come contenuto Parziale (all'inizio) "Re:".

    Esempio: Lanciando quella query mi eliminerebbe tutta la riga post_id = 7

    Ma voglio che mi elimini solo il contenuto (sempre per esempio) del campo post_subject del post 7.


    Spero di essermi spiegato bene, se non si è ancora capito scusate

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Prova così:
    Codice PHP:
    DELETE FROM ip_posts_text(post_subject) WHERE post_subject LIKE 'Re: %'
    O così:
    Codice PHP:
    UPDATE ip_posts_text SET post_subject = '' WHERE post_subject LIKE 'Re: %'
    Questa seconda query cambia il contenuto di post_subject in niente, quindi rimane un campo vuoto. E' solo una soluzione alternativa.
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    [...]
    Codice PHP:
    UPDATE ip_posts_text SET post_subject = '' WHERE post_subject LIKE 'Re: %'
    Questa seconda query cambia il contenuto di post_subject in niente, quindi rimane un campo vuoto. E' solo una soluzione alternativa.
    perfetta la seconda, grazie un milione

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •