views:

46

answers:

5

Please help me with this MySQL query. I've been on it for long enough. Perhaps it needs a fresh pair of eyes.

Two tables: locks and sessions

locks
--------------
id session_id
--------------
1  sajf4$Jf9422jd
2  2jf*4j2okg9092
3  J8j4j4ffss93o2
------------------

sessions
-------------------------
id              user_id
-------------------------
sajf4$Jf9422jd  14
J8j4j4ffss93o2  14
2jf*4j2okg9092  21
-------------------------

I want to delete all rows in locks where user_id of session = 14

+3  A: 
DELETE FROM locks 
WHERE session_id IN (SELECT id FROM sessions WHERE user_id = 14)
Kris C
DELETE FROM locks WHERE session_id **IN** (SELECT id FROM sessions WHERE user_id = 14) but close enough
gAMBOOKa
good point - will update
Kris C
+2  A: 

DELETE FROM locks WHERE session_id = (SELECT id FROM sessions WHERE user_id = 14);

JohnM
+2  A: 

delete from locks where session_id in (select_id from sessions where user_id =14)

spbfox
+1  A: 

Another way without a subquery:

delete from locks using locks join sessions on sessions.id=locks.session_id where sessions.user_id=14

Edward
A: 
DELETE locks, sessions FROM locks INNER JOIN sessions WHERE locks.session_id=sessions.id;
Omar