获取某些表的用户 ID 引用的已删除用户详细信息
Posted
技术标签:
【中文标题】获取某些表的用户 ID 引用的已删除用户详细信息【英文标题】:Get deleted users details if userid refrence to some table 【发布时间】:2021-01-07 17:34:15 【问题描述】:我对这个问题有点困惑,我有一个名为Member的表格,其结构如下,
+----------+------+-------------+
| MemberID | Name | ActiveState |
+----------+------+-------------+
| 1 | PAUL | 1 |
+----------+------+-------------+
| 2 | JHON | 1 |
+----------+------+-------------+
| 3 | AMBE | 0 |
+----------+------+-------------+
| 4 | NISH | 1 |
+----------+------+-------------+
我还有另一个名为 ServiceProvided 的表。及其结构如下。所有会员提供的数据都将保存在此表中。
+--------------+-------------+------------+
| ServiceProID | Fkserviceid | FkMemberID |
+--------------+-------------+------------+
| 1 | S1 | 1 |
+--------------+-------------+------------+
| 2 | S2 | 1 |
+--------------+-------------+------------+
| 3 | S1 | 2 |
+--------------+-------------+------------+
| 4 | S3 | 2 |
+--------------+-------------+------------+
应用程序可以通过将成员的活动状态更改为0
来软删除成员。我需要获取所有ActiveState = 1
members 数据,并且仅当该成员过去提供过任何服务时才需要获取,即使他被删除也应该检索他的数据。我该怎么做。
预期输出是,
ActiveState = 1
和ActiveState = 0
过去只提供过任何服务的会员
【问题讨论】:
预期输出是什么? 是什么决定了某人过去是否提供过服务? FkMemberID = MemberID 的存在? @jw11432 如果有人提供任何服务,则将其存储在ServiceProvided
表中。 FkMemberID = MemberID
?是的
@Serg 所有ActiveState = 1 and ActiveState = 0 members who has provided any service in the past
【参考方案1】:
SELECT m.*
FROM Member m
WHERE m.ActiveState = 1
UNION
SELECT m.*
FROM Member m
INNER JOIN ServiceProvided s ON m.MemberId = s.FkMemberId
WHERE m.ActiveState = 0;
实现这一目标的最简单方法是使用 UNION。
已删除成员查询上的 INNER JOIN 可确保您不会检索在 ServiceProvided 中缺少条目的成员。
【讨论】:
感谢您的回答,我需要ActiveState = 1
+ ActiveState = 0 members who has provided any service in the past
内容已更新以满足您的说明。如果这符合您的需求,请将其标记为已回答,以帮助其他有类似问题的人。以上是关于获取某些表的用户 ID 引用的已删除用户详细信息的主要内容,如果未能解决你的问题,请参考以下文章
在按每个用户ID映射和获取用户详细信息时,API无法正确获取用户的数据