LOCK TABLES
orders READ,
order_items READ,
orders AS orders2 READ,
orders AS orders3 READ;
SELECT *
FROM orders
WHERE (
SELECT COUNT(*)
FROM order_items
JOIN orders AS orders2
ON orders2.id = order_items.order_id
WHERE orders2.date BETWEEN '2023-01-01' AND '2023-03-31'
) > 0
AND (
SELECT COUNT(*)
FROM order_items
JOIN orders AS orders3
ON orders3.id = order_items.order_id
WHERE orders3.location = 'Kansas'
) > 0;
UNLOCK TABLES;
2条答案
按热度按时间g6ll5ycj1#
您需要同时为别名和表本身获取锁
here & here
rkttyhzu2#
再加上我的两分钱:当多次锁定表别名时,即使使用相同的表/别名并锁定其中的每一个,也需要使用不同的别名:(不好意思,举个愚蠢的例子)