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