Lo que queres hacer no lo hace ninguna consulta DML, solución DDL de
integridad referencial.
Supuestamente tenes creadas las dos tablas y definidos sus Primary Keys.
La tabla session_ids es la tabla maestra, y la tabla session_vars es la tabla detalle (te das cuenta por el tipo de relación, en este caso es de 1 a N).
Asi que solo tenes que hacer lo siguiente:
/*Pasamos las tablas a tipo INNODB, sino no funciona*/
ALTER TABLE session_ids TYPE=INNODB
ALTER TABLE session_vars TYPE=INNODB
Luego creamos la restricción de clave ajena (o foreign key... en pocas palabras la integridad referencial para estas dos tablas).
ALTER TABLE session_vars /*Vamos a alterar la definicion de esta tabla*/
ADD FOREIGN KEY(id) REFERENCES session_ids(id) /*Vinculamos los indices de las dos tablas*/
ON UPDATE CASCADE
ON DELETE CASCADE
/*Al modificar o eliminar el id (por lo tanto la tupla) de session_ids
se actua en consecuencia sobre la tabla session_vars
es decir, si se modifica el session_ids.id = 400 a 401 la modificación
se propaga a todas las tuplas que tengan session_vars.id = 400
modificandolas a 401. Con la eliminacion sucede lo mismo*/
Y por ultimo realizas la eliminación de las tuplas de session_ids con time mayor o igual a 1000
DELETE FROM session_ids
WHERE TIME >= 1000
Con tu ejemplo, y algunos datos más:
Tabla: session_ids
id | time
0001 1000
0002 500
0003 1500
Tabla: session_vars
id | name | value
0001 xxx xxx
0001 yyy yyy
0001 zzz zzz
0002 aaa aaa
0003 bbb bbb
0003 ccc ccc
El motor primero busca los id en session_vars que correspondan a los id con time >= 1000 de session_ids, y los borra, posteriormente borra los id con time >= 1000 de session_ids. Todo automáticamente... no es maravilloso??
El motor internamente hace algo como ésto:
DELETE FROM session_vars
WHERE id = (
SELECT ID
FROM session_ids Ids LEFT JOIN session_vars Vars
WHERE (TIME >= 1000) AND (Vars.id = Ids.id) )
DELETE FROM session_ids
WHERE TIME >= 1000
Esto ultimo es solo para dar una idea mental, no está probado.Tu conjunto resultado:
Tabla: session_ids
id | time
0002 500
Tabla: session_vars
id | name | value
0002 aaa aaa
Espero haber sido claro.