首页 > 解决方案 > 关系 MySQL 查询

问题描述

我有一个名为 users 的表:

+----+---------+--------+----------------+----------------+----------+
| ID |  Name   |  Zip   |     Email      |     Phone      | Username |
+----+---------+--------+----------------+----------------+----------+
|  0 | Jill    |  33333 | jill@aol.com   | (123)123-1245  | idjill   |
|  1 | Jack    | 11111  | jack@aol.com   | (123)111-1111  | idjack   |
|  2 | Bob     |  66666 | bob@aol.com    | (123)222-2222  | idbob    |
|  3 | jMarie  |  12345 | jill@aol.com   | (123)123-1245  | none     |
+----+---------+--------+----------------+----------------+----------+

如果我运行SELECT * FROM users WHERE Phone=(123)123-1245将返回 ID# 0 和 3。

我想要做的是能够选择用户,但也返回具有相同电话或电子邮件但没有邮政编码的任何其他用户。因此,例如,如果我运行SELECT * FROM users WHERE Username= idjill我希望它返回用户 0 和 3,因为他们都有相同的电话号码。

我怎样才能做到这一点?谢谢。如果有人对这篇文章的标题有更好的想法,请分享。我的第一篇文章,对不起。

编辑:我想我需要澄清一下我的问题。所以我在这里有这个选择查询:

SELECT *  FROM users WHERE Username = 'idjill' OR Email = 'idjill'

完美返回 ID 0,我希望它返回 ID 0 和 3。因为电话和电子邮件匹配(我使用相同的输入在用户名和电子邮件之间进行搜索)。

我该如何扩展呢?

标签: mysql

解决方案


您可以像这样使用嵌套查询。

SELECT * 
FROM users 
WHERE Phone=(SELECT PHONE 
             FROM users 
             WHERE Name='Jill') OR 
      Email=(SELECT Email 
             FROM users 
             WHERE Name='Jill');

推荐阅读