有一个大容量文件,其中包含一个区域中所有用户的loginID。现在,我需要从数据库中获取所有ID的用户名,但文件中有许多无效的登录ID,而且它们在MSSql数据库中不存在。
我试图给出下面的查询,但只有当登录ID存在时,它才会给出结果。如果在数据库中找不到loginID,是否有可能得到"Null"或"未找到"的结果?
select username from contacts where loginID in ('xyz','abc',... upto 3K records)
使用left join
。要做到这一点,您需要从id的"表"开始。因此:
select v.id, c.username
from (values ('xyz'), ('abc'), . . .
) v(id) left join
contacts c
on c.id = v.id;
注意:如果您的列表已经来自数据库中的某个查询,则将该查询包括在此查询中(作为CTE或子查询(,或者将结果保存在临时表中。