Heim  >  Fragen und Antworten  >  Hauptteil

LIMIT delete kann in der MySQL-Join-Abfrage zwischen mehreren Tabellen nicht verwendet werden

Das ist meine SQL-Abfrage:

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;

Ich erhalte die Fehlermeldung, dass in der Nähe von LIMIT ein Syntaxfehler vorliegt. Ich habe hier eine Lösung gefunden: DELETE mit LEFT JOIN mit LIMIT in MySQL. Ich kann die Abfrage nicht in eine Select-Anweisung umwandeln.

P粉180844619P粉180844619185 Tage vor397

Antworte allen(1)Ich werde antworten

  • P粉166675898

    P粉1666758982024-04-02 00:49:42

    只有单表DELETE支持LIMIT。< /p>

    将查询用作带有 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 表的主键或唯一列/表达式。

    Antwort
    0
  • StornierenAntwort