• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

MySQL Question

Collapse
X
  •  
  • Filter
  • Time
  • Show
Clear All
new posts

    MySQL Question

    I have several tables containing over 20k rows. Is there a quick way to delete all but the first 20 rows in each of the tables?
    Me, me, me...

    #2
    I'm not a mySQL guru but is there a way to spit out the rownum?
    Something like select @rownum:=@rownum+1, ID, ..... from ... where @rownum <=20;

    insert that into a temporary table and then
    delete from tableA where ID not in (select ID from tmptable)
    McCoy: "Medical men are trained in logic."
    Spock: "Trained? Judging from you, I would have guessed it was trial and error."

    Comment


      #3
      Originally posted by lilelvis2000 View Post
      I'm not a mySQL guru but is there a way to spit out the rownum?
      Something like select @rownum:=@rownum+1, ID, ..... from ... where @rownum <=20;

      insert that into a temporary table and then
      delete from tableA where ID not in (select ID from tmptable)
      Thanks I'll give that a go.
      Me, me, me...

      Comment


        #4
        Can you not use the order by limit 20 in the delete statement ?

        Comment


          #5
          Originally posted by FiveTimes View Post
          Can you not use the order by limit 20 in the delete statement ?
          I'm clueless when it comes to sql
          Me, me, me...

          Comment


            #6
            Originally posted by Cliphead View Post
            I have several tables containing over 20k rows. Is there a quick way to delete all but the first 20 rows in each of the tables?
            well this will give you the first 20 rows

            SELECT tableid FROM {table} ORDER BY {row} asc LIMIT 20

            so something like will work
            delete from table where tableid not in (
            SELECT tableid FROM {table} ORDER BY {row} asc LIMIT 20)
            merely at clientco for the entertainment

            Comment


              #7
              Good stuff.
              McCoy: "Medical men are trained in logic."
              Spock: "Trained? Judging from you, I would have guessed it was trial and error."

              Comment


                #8
                How many tables? Do the tables have an ID column? As other posters have said you can simply delete where ID > 20 so

                DELETE from TABLE where ID > 20;

                Comment


                  #9
                  Originally posted by Cliphead View Post
                  I'm clueless when it comes to sql
                  dunno mysql but in Oracle you could use the rownum, mysql prob has something similar,

                  or perhaps SELECT * FROM TABLE WHERE NOT IN (SELECT TOP 20 * FROM TABLE)
                  sufficiently advanced stupidity is indistinguishable from malice - Asimov (sort of)

                  there is no art in a factory, not even in an art factory - Mixerman

                  everyone is stupid some of the time - trad.

                  Comment


                    #10
                    Originally posted by Cliphead View Post
                    I have several tables containing over 20k rows. Is there a quick way to delete all but the first 20 rows in each of the tables?
                    Use phpmyadmin or Mysql Workbench and select/delete with your mouse.

                    Comment

                    Working...
                    X