mysql - 从表 A 中选择,如果不存在则选择表 B

标签 mysql

我有两个表,如下所示,

表A:

+------+----------------+
| TYPE | EMAIL          |
+------+----------------+
| 0    | test1@mail.com |
| 1    | test2@mail.com |
| 2    | test3@mail.com |  

表B:

+------+----------------+
| ID   | EMAIL          |
+------+----------------+
| 1    | test1@mail.com |
| 2    | test4@mail.com |
| 3    | test5@mail.com |  

我需要按照以下条件检查两个表中的电子邮件地址,

  1. 检查表 A,如果存在,请选择类型
  2. 如果它不在表 A 中,则在表 B 中检查它并选择 ID
  3. 即使它不在表 B 中作为正常选择查询的空结果

我可以通过两个查询来完成此操作,但我的问题是是否有可能通过一个查询来完成此操作?

提前致谢。

最佳答案

这是一个替代方案:我希望它无论如何都能有用。

(SELECT NULL AS ID, EMAIL, TYPE FROM A WHERE EMAIL=<email>)
UNION
(SELECT ID, EMAIL, NULL AS TYPE FROM B WHERE EMAIL=<email>)

在您的应用程序中,您将检索 0 到 2 个结果。如果您得到 1 个结果,请使用它(请注意,ID 或 TYPE 中将有 NULL 值)。如果您得到 2 个结果,请使用 TYPE 不为 NULL 的结果。

使用您的数据集和“test1@mail.com”作为查询参数,这将是查询结果:

ID    EMAIL           TYPE
NULL  test1@mail.com  0
1     test1@mail.com  NULL

关于mysql - 从表 A 中选择,如果不存在则选择表 B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24593482/

相关文章:

Mysql on delete 设置默认值

mysql - SQL - 从大数据集中返回最新的多条记录

mysql - 使用 Node 和 Mysql

sql - 使用 perl 自动执行 sql 连接

mysql - 从 MySql 表中删除重复行

mysql - SQL - 如何从同一列中选择多个表并连接多行?

mysql - 这些 mysql 查询中哪个更有效,是否使用左连接

Java - 如何将数据从txt文件插入数据库

php - 从另一个数据库获取数据

mysql - 从 VM 计算引擎连接到我的数据库