我想要做的是返回选定的少数用户的邮箱位置,并为其他人返回所有邮箱位置。在 postfix 中,您可以向其传递表单中的查询
SELECT mailbox FROM virtual_mailboxes WHERE email = '%s'
它将用它要查找的电子邮件用户替换 %s。我有一个表,其中包含一组需要自己的邮箱(root、support、postmaster)的用户,并且我希望能够创建一个返回配置的邮箱或“all/”的查询。例如,如果用户名是“support”,那么我希望它提取用户名“support”的邮箱列。如果用户名是“anybody”,与表中的行不匹配,我希望它返回“all/”。
Here is the query I came up with.
SELECT
CASE
WHEN v2.username IS NOT NULL THEN v2.mailbox
ELSE 'all/'
END AS mailbox2
FROM virtual_mailboxes v1
LEFT JOIN virtual_mailboxes v2 ON v2.username = SUBSTRING_INDEX('support@gmail.com', '@', 1)
LIMIT 1
它有效,但我觉得这样做是非常错误的,我很好奇是否有更好的方法。
还有一件事,postfix 将只替换第一次出现的 %s。感谢您的帮助。
最佳答案
SELECT coalesce(
(SELECT mailbox FROM virtual_mailboxes WHERE email = '%s'),
'all/'
);
关于sql - 我需要对 sql 查询进行健全性检查,如果表中存在该值,则返回一个值;如果不存在,则返回默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407680/