【发布时间】:2018-07-11 16:44:28
【问题描述】:
我正在尝试让这个 MySQL 搜索查询工作。我希望它返回 firstName、lastName、email 或至少一个 secondaryEmail 与搜索字符串匹配的所有用户。一个用户可以有许多辅助电子邮件。
这是我的 SQL 查询:
SELECT `users`.`id`,
`users`.`first_name` AS `firstName`,
`users`.`last_name` AS `lastName`,
`users`.`email`,
`usersSecondaryEmails`.`id` AS `usersSecondaryEmails.id`,
`usersSecondaryEmails`.`email` AS `usersSecondaryEmails.email`
FROM `Users` AS `users`
LEFT OUTER JOIN `UsersSecondaryEmails` AS `usersSecondaryEmails`
ON `users`.`id` = `usersSecondaryEmails`.`user_id`
WHERE (`users`.`first_name` LIKE '%bob%'
OR `users`.`last_name` LIKE '%bob%'
OR `users`.`email` LIKE '%bob%'
OR `usersSecondaryEmails`.`email` LIKE '%bob%');
此查询成功返回,但是当只有匹配的辅助电子邮件时,它只返回该电子邮件,而不是所有关联的电子邮件。如果找到至少一封辅助电子邮件,我如何更改此查询以返回所有电子邮件?我知道它很可能会有一个包含 EXISTS 的子查询,但我不太确定我会把它放在哪里。
编辑:用户表有名字、姓氏和电子邮件 UsersSecondaryEmails 表有 user_id 和 email
如果用户有 2 封辅助电子邮件(UsersSecondaryEmails 上的“电子邮件”列),并且其中至少有一个与搜索字符串匹配,我希望能找回他们所有的辅助电子邮件。截至目前,这只返回匹配的电子邮件。
【问题讨论】:
-
您能提供一些示例数据并期待结果吗?
-
表结构???样本输入???预期输出???这是如何提问的指南。 stackoverflow.com/help/how-to-ask