【发布时间】:2026-02-20 20:05:01
【问题描述】:
问题:SQL 查询查看“多”关系中的值,但不返回“1”关系中的值。
表格示例:(这显示了两个不同的表格)。
+---------------+----------------------------+-------+
| Unique Number | <-- Table 1 -- Table 2 --> | Roles |
+---------------+----------------------------+-------+
| 1 | | A |
| 2 | | B |
| 3 | | C |
| 4 | | D |
| 5 | | |
| 6 | | |
| 7 | | |
| 8 | | |
| 9 | | |
| 10 | | |
+---------------+----------------------------+-------+
当我运行查询时,我会得到多个唯一的数字,这些数字显示了与每个数字相关联的所有角色,就像这样。
+---------------+-------+
| Unique Number | Roles |
+---------------+-------+
| 1 | C |
| 1 | D |
| 2 | A |
| 2 | B |
| 3 | A |
| 3 | B |
| 4 | C |
| 4 | A |
| 5 | B |
| 5 | C |
| 5 | D |
| 6 | D |
| 6 | A |
+---------------+-------+
我希望能够运行我的查询并能够说,“当 A 的角色出现时,甚至不要向我显示具有 A 角色的唯一数字”。
如果 SQL 可以查看角色并说,当角色 A 出现时,获取唯一编号并将其从第 1 列中删除。
根据我“希望”发生的事情(我把它放在引号中,因为这可能甚至不可能)以下是我希望我的查询返回的内容。
+---------------+-------+
| Unique Number | Roles |
+---------------+-------+
| 1 | C |
| 1 | D |
| 5 | B |
| 5 | C |
| 5 | D |
+---------------+-------+
更新:
查询示例:我正在查询 8 个表,但为了简单起见,我将其压缩为 4 个。
SELECT
c.UniqueNumber,
cp.pType,
p.pRole,
a.aRole
FROM c
JOIN cp ON cp.uniqueVal = c.uniqueVal
JOIN p ON p.uniqueVal = cp.uniqueVal
LEFT OUTER JOIN a.uniqueVal = p.uniqueVal
WHERE
--I do some basic filtering to get to the relevant clients data but nothing more than that.
ORDER BY
c.uniqueNumber
表格大小:这些表格的行数可以从 50,000 到 500,000+
【问题讨论】:
-
请包含您正在使用的查询。
-
当然,我必须使它适合公众,因为这是针对客户的。
标签: sql sql-server ssms