Mysql
 sql >> Base de données >  >> RDS >> Mysql

erreur ou bogue de verrouillage mysql?

lorsque vous utilisez des tables de verrouillage, vous devez verrouiller toutes les tables de votre requête. Lorsque vous utilisez une sous-requête, elle crée une table. et vous ne le verrouillez pas. À cause de cela, vous obtenez une erreur.

référence :http://dev.mysql.com/doc /refman/5.0/en/lock-tables.html

donner un alias à la table interne

échantillon testé :

lock tables products as p1 write, products as p2 write ;
select product_id  from products as p1
where product_id  not in ( 
select product_id from products p2 where product_id in (1,2)
) 

Et vous en avez probablement besoin :

lock tables radcheck as r1 write, radcheck as r2 write ;

 SELECT * FROM radcheck r1 WHERE id NOT IN (
SELECT id FROM (
  SELECT id FROM radcheck r2 WHERE attribute = 'Password' GROUP BY UserName HAVING COUNT(*) > 1) AS c
 );