如何 select 全部来自 table 一个基于一个值,然后 select 来自同一个 table 以及那个 table 的值?

How to select all from table one based on a value, then select from same table with value from that table?

我有一个 table 用户看起来像这样。 Socialnr 在一行或多行中为空的地方。

Userid:1 Phone:12345 Email:test@test.com Socialnr:88776655
Userid:2 Phone:12345 Email:              Socialnr:
Userid:3 Phone:      Email:test@test.com Socialnr:

假设我从一开始就只有 Socialnr。 所以从这里我需要

select * from users where socialnr=88776655

但是我需要能够 select 其他两行以及基于我从第一个 select 获得的相同电子邮件或电话号码。 我需要单独的行。 感谢任何输入,谢谢。

根据 Gordon 的回答,我现在用我的真实代码有了这个。

SELECT u.* FROM appmanager.appusers u where u.userId='797' and u.personnrvh2='88776655' OR exists (select 1 from appmanager.appusers u2 where u2.userId='797' and u2.personnrvh2='88776655'  and (u2.emailvh2 = u.emailvh2 or u2.mobilvh2 = u.mobilvh2))

好的,这就是解决方案,非常感谢 Gordon!

嗯。 . .根据您的描述,您可以使用 exists:

select u.*
from users u
where u.Socialnr = 88776655 or
      exists (select 1
              from users u2
              where u2.Socialnr = 88776655 and
                    (u2.email = u.email or u2.phone = u.phone)
             );

如果需要,您也可以使用 window 函数。 . .假设每个 emailphone 都有一个终极 Socialnr

select u.*
from (select u.*,
             max(Socialnr) over (partition by email) as imputed_socialnr_email,
             max(Socialnr) over (partition by phone) as imputed_socialnr_phone
      from users u
     ) u
where 88776655 in (Socialnr, imputed_socialnr_email, imputed_socialnr_phone)