我有两个表,如下所示,
表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 |
我需要按照以下条件检查两个表中的电子邮件地址,
- 检查表 A,如果存在,请选择类型
- 如果它不在表 A 中,则在表 B 中检查它并选择 ID
- 即使它不在表 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/