code_junkie

How to Fix This MySQL Query So It Works?

Nov 12th, 2011
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. UPDATE lessonstatus
  2. INNER JOIN user ON lessonstatus.user_id = user.user_id
  3. SET user_id = (SELECT user_id FROM user WHERE username = 'too_many_accounts')
  4. WHERE last_name = 'stupid'
  5. AND first_name = 'user'
  6. AND username != 'too_many_accounts'
  7. AND lessonstatus.lesson_id NOT IN (SELECT lesson_id FROM lessonstatus WHERE user_id = 1);
  8.  
  9. Error Code : 1093
  10. You can't specify target table 'lessonstatus_rtab' for update in FROM clause
  11.  
  12. UPDATE lessonstatus l1
  13. INNER JOIN user u1 ON (l1.user_id = u1.user_id)
  14. INNER JOIN user u2 ON (u2.username = 'too_many_accounts')
  15. LEFT OUTER JOIN lessonstatus l2
  16. ON (l1.lesson_id = l2.lesson_id AND l2.user_id = 1)
  17. SET l1.user_id = u2.user_id
  18. WHERE u1.last_name = 'stupid' AND u1.first_name = 'user'
  19. AND u1.username != 'too_many_accounts'
  20. AND l2.lesson_id IS NULL; -- equivalent to "l NOT IN l2"
  21.  
  22. UPDATE lessonstatus
  23. SET user_id = (SELECT TOP 1 user_id FROM user WHERE username = 'too_many_accounts')
  24. FROM lessonstatus
  25. INNER JOIN user ON lessonstatus.user_id = user_rtab.user_id
  26. WHERE last_name = 'stupid'
  27. AND first_name = 'user'
  28. AND username != 'too_many_accounts'
  29. AND lessonstatus.lesson_id NOT IN (
  30. SELECT lesson_id FROM lessonstatus WHERE user_id = 1
  31. );
Add Comment
Please, Sign In to add comment