MySQL获取所有关联记录,其中至少有一条记录匹配查询

标签 mysql sql

我正在尝试让这个 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 个辅助电子邮件(UserSecondaryEmails 上的“电子邮件”列),并且其中至少一个与搜索字符串匹配,我希望取回他们所有的辅助电子邮件。截至目前,这只会返回匹配的电子邮件。

最佳答案

子查询应该做

 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 users, UsersSecondaryEmails usersSecondaryEmails
    WHERE users.id IN (SELECT user_id FROM UsersSecondaryEmails)
    AND users.id = usersSecondaryEmails.user_id

    AND
    (
    `users`.`first_name` LIKE '%bob%'
    OR
    `users`.`last_name` LIKE '%bob%'
    OR
    `users`.`email` LIKE '%bob%'
    )

关于MySQL获取所有关联记录,其中至少有一条记录匹配查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51290576/

相关文章:

javascript - 尝试将 contenteditable div 的内容保存到 MySQL 数据库

mysql - Vista 上的 wamp mysql : unexplainable slow queries

mysql - Django ManyToManyField 无法创建 "through"表

java - SPRING MVC数据库jdbc错误

sql - 子选择的问题

mysql - 从3个表中获取数据

PHP/MySQL 更新查询根本不起作用

mysql - 在 MySQL 中选择所有带有 WHERE 子句的行

c# - 连接字符串无效或定位服务器/实例时出错

MySQL(5.1.61) : Phpymyadmin ( 3. 3.7) 尝试导入约500kb的sql文件