How to write a SQL DELETE statement with a SELECT statement in the WHERE clause?

前端 未结 5 1641
梦毁少年i
梦毁少年i 2020-11-30 02:10

Database: Sybase Advantage 11

On my quest to normalize data, I am trying to delete the results I get from this SELECT statement:

SELECT          


        
5条回答
  •  抹茶落季
    2020-11-30 03:00

    Did something like that once:

    CREATE TABLE exclusions(excl VARCHAR(250));
    INSERT INTO exclusions(excl)
    VALUES
           ('%timeline%'),
           ('%Placeholders%'),
           ('%Stages%'),
           ('%master_stage_1205x465%'),
           ('%Accessories%'),
           ('%chosen-sprite.png'),
    ('%WebResource.axd');
    GO
    CREATE VIEW ToBeDeleted AS 
    SELECT * FROM chunks
           WHERE chunks.file_id IN
           (
           SELECT DISTINCT
                 lf.file_id
           FROM LargeFiles lf
           WHERE lf.file_id NOT IN
                 (
                 SELECT DISTINCT
                        lf.file_id
                 FROM LargeFiles lf
                    LEFT JOIN exclusions e ON(lf.URL LIKE e.excl)
                    WHERE e.excl IS NULL
                 )
           );
    GO
    CHECKPOINT
    GO
    SET NOCOUNT ON;
    DECLARE @r INT;
    SET @r = 1;
    WHILE @r>0
    
    BEGIN
        DELETE TOP (10000) FROM ToBeDeleted;
        SET @r = @@ROWCOUNT  
    END
    GO
    

提交回复
热议问题