Postgresql 在列表中查找项目,然后显示这些值
假设我有一个电子邮件地址列表Postgresql 在列表中查找项目,然后显示这些值,postgresql,Postgresql,假设我有一个电子邮件地址列表 'a@a.com', 'b@b.com', 'c@c.com' 我想在表中找到这些电子邮件地址,然后在结果中显示它们,然后还显示表中没有的值 我现在的问题是, SELECT email, first_name, last_name FROM user_table WHERE email IN ('a@a.com', 'b@b.com'....) 如何让它显示不在同一列表表中的值?我试过使用CTE之类的工具,但运气不太好。TIA.为了从一串地址中列出电子邮件的用户
'a@a.com', 'b@b.com', 'c@c.com'
我想在表中找到这些电子邮件地址,然后在结果中显示它们,然后还显示表中没有的值
我现在的问题是,
SELECT email, first_name, last_name
FROM user_table
WHERE email IN ('a@a.com', 'b@b.com'....)
如何让它显示不在同一列表表中的值?我试过使用CTE之类的工具,但运气不太好。TIA.为了从一串地址中列出电子邮件的用户,您首先要将这些地址拆分为单独的条目。然后,因为您还想知道列表中哪些不在表中,所以将表与生成的单个条目连接起来:(请参阅)
真正的工作是在电子邮件列表中完成的。函数string_to_数组将逗号分隔的字符串分开,并创建一个字符串数组。然后,unnest函数将该数组拆分为单独的行。之后,主查询是一个简单的左连接操作 谢谢分享,我从来没有听说过小提琴,我正在检查它。很酷,是的!它不仅可以展示答案,而且是一个很好的论坛,可以为他们设置问题和采样数据。
with email_list (email) as
( select unnest(string_to_array('&list_of_emails', ',')) )
select el.email
, coalesce(ut.first_name,'Not in User_Table') first_name
, ut.last_name
from email_list el
left join user_table ut
on ut.email = el.email;