Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql lock fehler oder bug?

Wenn Sie Sperrtabellen verwenden, müssen Sie alle Tabellen in Ihrer Abfrage sperren. Wenn Sie eine Unterabfrage verwenden, wird eine Tabelle erstellt. und Sie sperren es nicht. Aus diesem Grund erhalten Sie eine Fehlermeldung.

Referenz:http://dev.mysql.com/doc /refman/5.0/en/lock-tables.html

Geben Sie der inneren Tabelle einen Alias ​​

getestetes Muster:

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)
) 

Und wahrscheinlich müssen Sie dies tun:

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
 );