ロックテーブルを使用する場合は、クエリ内のすべてのテーブルをロックする必要があります。サブクエリを使用すると、テーブルが作成されます。そして、あなたはそれをロックしていません。そのため、あなたはエラーを受け取っています。
参照: http://dev.mysql.com/doc /refman/5.0/en/lock-tables.html
内部テーブルにエイリアスを与える
テスト済みサンプル:
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)
)
そしておそらくあなたはこれをする必要があります:
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
);