如果不存在则从表A中选择,然后从表B中选择

时间:2014-07-06 07:03:29

标签: 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,IF EXISTS选择TYPE
  2. 如果它不在表A中,则在表B中选中ID
  3. 即使它不是表B中的空结果,也不是正常的选择查询
  4. 我可以用两个quires做到这一点,但我的问题是,是否有可能用一个查询来做到这一点?

    提前致谢。

1 个答案:

答案 0 :(得分:2)

这是另一种选择:我希望无论如何它都可以用。

(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的那个。

使用您的数据集和&#34; test1@mail.com"作为查询参数,这将是查询的结果:

ID    EMAIL           TYPE
NULL  test1@mail.com  0
1     test1@mail.com  NULL
相关问题