1. 程式人生 > >多表連線查詢

多表連線查詢

1、查詢使用者擁有的許可權

子查詢和連線查詢2種,比較推薦連線查詢,子查詢比較影響效能,子查詢看起來比較容易理解,而連線查詢需要比較熟悉各個表之間的關係

SELECT DISTINCT p.* FROM t_permission p
    LEFT JOIN t_role_permission trp ON trp.`permissionid`=p.`id`
    LEFT JOIN t_role tr ON tr.`id`=trp.`roleid`
    WHERE tr.id IN(
        SELECT t_r.id FROM t_role t_r
        LEFT JOIN t_user_role t_u_r
            ON t_u_r.`roleid`=t_r.`id`
        WHERE t_u_r.`userid`=31
    );

子查詢不太推薦,比較影響效能
推薦連線查詢
SELECT DISTINCT p.* FROM t_permission p
    LEFT JOIN t_role_permission trp ON trp.`permissionid`=p.`id`
    LEFT JOIN t_role tr ON tr.`id`=trp.`roleid`
    LEFT JOIN t_user_role tur ON tur.`roleid`=tr.`id`
    LEFT JOIN t_user tu ON tu.`id`=tur.`userid`
    WHERE tu.`id`=31;

本文由部落格一文多發平臺 OpenWrite 釋出!