sql >> Database >  >> RDS >> Mysql

mysql :Toon geen dubbel resultaat op SELECT

Helaas moet u de twee bovenste zoekopdrachten twee keer uitvoeren om ze uit de onderste zoekopdracht te verwijderen:

SELECT p.*, 1 as enabled
    FROM member_permissions mp
    JOIN permissions p ON p.permission_id = mp.permission_id
    WHERE member_id = 1
UNION
    SELECT pgp.*, 1 as enabled
    FROM member_permissions mp
    JOIN permission_link pl ON pl.permission_group_id = mp.permission_group_id
    JOIN permissions pgp ON pgp.permission_id = pl.permission_id
    WHERE member_id = 1
UNION
    SELECT *, 0 as enabled
    FROM permissions p where p.permission_id not in (
      SELECT p.permission_id
          FROM member_permissions mp
          JOIN permissions p ON p.permission_id = mp.permission_id
          WHERE member_id = 1
      UNION ALL
      SELECT pgp.permission_id
          FROM member_permissions mp
          JOIN permission_link pl ON pl.permission_group_id = mp.permission_group_id
          JOIN permissions pgp ON pgp.permission_id = pl.permission_id
          WHERE member_id = 1
   )


  1. PostgreSQL:invoegen vanuit een andere tabel

  2. PostgreSQL - Gecorreleerde subquery mislukt?

  3. Mysqli rollback werkt niet

  4. Volledige volledige MySQL-databasereplicatie? Ideeën? Wat doen mensen?