sql >> Databasteknik >  >> RDS >> Oracle

Försöker ta bort från flera tabeller med SQL

delete kan bara hantera en tabell åt gången, så du behöver tre satser:

DELETE FROM upklist 
WHERE  session_id = (SELECT session_id 
                     FROM   usession 
                     WHERE  delete_session_id IS NULL 
                            AND user_id = (SELECT user_id 
                                           FROM   users 
                                           WHERE  REGEXP_LIKE(USER_NAME, 
                                                  'awpeople', 'i'))); 

DELETE FROM projshar 
WHERE  session_id = (SELECT session_id 
                     FROM   usession 
                     WHERE  delete_session_id IS NULL 
                            AND user_id = (SELECT user_id 
                                           FROM   users 
                                           WHERE  REGEXP_LIKE(USER_NAME, 
                                                  'awpeople', 'i'))); 

DELETE FROM usession 
WHERE  session_id = (SELECT session_id 
                     FROM   usession 
                     WHERE  delete_session_id IS NULL 
                            AND user_id = (SELECT user_id 
                                           FROM   users 
                                           WHERE  REGEXP_LIKE(USER_NAME, 
                                                  'awpeople', 'i'))); 

Observera att eftersom den inre frågan bygger på usersession , bör du radera från den senast .



  1. Använda subquery i en Check-sats i Oracle

  2. StaleObjectStateException på högfrekventa uppdateringar

  3. Mongodb :Fråga baserad på tid i ISODate-format

  4. mysql_num_rows-ersättning att rekommendera?