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;