mysql - 如何根据第一次选择的列 id 选择更多行
问题描述
我有 2 个选择语句。一个返回 2 行,另一个必须返回更多行。我想在一个查询中选择所有行而不使用 UNION,因为我将无法将相同的列 ID 与 UNION 一起使用。
我的查询是这个
SELECT SUB.name FROM (SELECT U1.id ,U1.name, UOM.organization_id AS ORGID FROM #_users AS U1
JOIN #_user_organization_map AS UOM ON U1.id = UOM.user_id
JOIN #_rsdirectory_entries AS RSE ON UOM.organization_id = RSE.id
JOIN #_rsmembership_membership_subscribers AS RMS ON U1.id = RMS.user_id
WHERE RMS.membership_id = 66 AND UOM.organization_id = 301) AS SUB
JOIN #_users AS U ON SUB.id = U.id
JOIN #_user_organization_map AS UOM1 ON SUB.id = UOM1.user_id
JOIN #_rsdirectory_entries AS RSE1 ON UOM1.organization_id = RSE1.id
JOIN #_rsmembership_membership_subscribers AS RMS1 ON SUB.id = RMS1.user_id
WHERE UOM1.organization_id = SUB.ORGID;
我要做的是让所有用户都属于特定成员,但并非所有用户都在数据库中的详细信息中携带membership_id 值,只有组织的CEO。
因此,嵌套的 SELECT 应该获取订阅所属的 CEO 的姓名(因此是 members_id),然后在外部 SELECT 中,我想通过组织 ID 获取同一组织下的所有员工。
我得到的结果是 CEO 的名字两次,但我应该得到 CEO 的名字,然后是所有员工的名字。
解决方案
子查询仅返回 CEO 的信息。有关员工的信息在U
您加入的表中。
但是你不能加入U.id = SUB.id
,因为那只是限制U
在 CEO 的行。您希望让所有用户与 CEO 在同一个组织中。
我认为这会做到。最后三个join获取CEO的组织ID
SELECT U.name
FROM #_users AS U1
JOIN #_user_organization_map AS UOM1 ON1 U.id = UOM1.user_id
JOIN #_user_organization_map AS UOM ON UOM1.id = UOM.id
JOIN #_rsdirectory_entries AS RSE ON UOM.organization_id = RSE.id
JOIN #_rsmembership_membership_subscribers AS RMS ON U1.id = RMS.user_id
WHERE RMS.membership_id = 66 AND UOM.organization_id = 301
推荐阅读
- java - 如何使用Java中的数组从整数转换为月份
- python - 从下表中删除 $$Units
- r - 计算R中访问的城市数量
- python - python3选择一个随机字典
- javascript - 如何清除打字稿中的类型化数组并保留其类型?
- loops - 计算移动值范围内的平均值和标准差
- android - 将 Gradle 从 2.14 升级到 4.6
- python - 从 Python 列表中删除一个 Numpy 对象
- mysql - BEFORE 触发器和 ON UPDATE CURRENT_TIMESTAMP 之间的性能差异 - MySQL
- bash - 从第二个文件 bash 有条件地读取