【发布时间】:2017-02-10 23:05:20
【问题描述】:
第三个选择显示结果与前两个选择的结果重复。 所以可以说我的数据集只有 5 个 id。 前两个语句产生 ids 1,2,3 enabled = 1 我需要的最后一条语句 ids 4,5 enabled = 0
但是现在我启用了 1,2,3,4,5 的 ID = 1 加上 1,2,3,4,5 的启用 = 0
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
【问题讨论】:
-
我看不到最终 UNION/SELECT 的意义。它一定会产生您所抱怨的输出。
-
GROUP BY 是你要找的...
-
最终选择的重点是生成前2次选择中未显示的剩余数据。那么我应该怎么做才能产生我需要的剩余数据?
-
@robWood 我应该把 GROUP BY 放在哪里?
-
副手,我想你可以只在最后贴一个,但你可能需要将它包装在另一个查询中并按结果分组。 stackoverflow.com/questions/7640396/…