无法在多个表之间的 mysql 连接查询中使用 LIMIT 删除
P粉180844619
P粉180844619 2024-04-01 10:21:30
0
1
496

这是我的 SQL 查询:

DELETE gur
FROM group_master gm
JOIN group_users gu
ON gu.group_id=gm.id
JOIN group_user_roles gur
ON gur.group_user_id=gu.id
WHERE gm.school_code = 14741359 AND gm.ayid=3
LIMIT 1;

我收到错误消息,指出 LIMIT 附近存在语法错误。我在这里找到了一个解决方案:DELETE using LEFT JOIN with LIMIT in MySQL。 我无法将查询转换为选择语句。

P粉180844619
P粉180844619

全部回复(1)
P粉166675898

只有单表DELETE支持LIMIT。

将查询用作带有 LIMIT 的 SELECT 并获取行的 ID(记住 - 没有 ORDER BY 的 LIMIT 是一种彩票)。然后从另一个表副本中删除相应的行。

DELETE group_user_roles 
FROM group_user_roles 
JOIN (SELECT gur.id
      FROM group_master gm
      JOIN group_users gu ON gu.group_id=gm.id
      JOIN group_user_roles gur ON gur.group_user_id=gu.id
      WHERE gm.school_code = 14741359 AND gm.ayid=3
      /* ORDER BY ??? */ LIMIT 1
      ) USING (id)

id 替换为 group_user_roles 表的主键或唯一列/表达式。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板