MySQL从多表中选择名称

时间:2019-12-06 08:24:30

标签: mysql

我知道它一定很简单,但是现在我在sql中是菜鸟,所以对我来说这并不简单。 我有2张桌子:

ClassA

Id     Name
1      Kate
2      John

B类

Id     Name
1      Mark
2      Lisa

表ClassA和ClassB中的所有名称都是唯一的。

因此,我需要在表 ClassB 中插入名称“ Kate”,但是在此之前,我要检查表A和ClassB中是否已经存在Kate。

如果存在,则从表中返回行,如果不存在,则不返回任何内容

如果要检查,我使用一张表就可以了:

SELECT ClassA.name FROM ClassA WHERE ClassA.name=‘Kate’

结果:

名称

凯特

但是,如果我签入两个表,结果什么也不返回。我认为是因为ClassA返回Kate,而ClassB返回Null结果

 SELECT ClassA.name, ClassB.name FROM ClassA,ClassB WHERE ClassA.name=‘Kate’ OR ClassB.name= ‘Kate’

请帮助解决我的问题

1 个答案:

答案 0 :(得分:0)

  

我检查在表ClassA和ClassB中是否已经存在Kate。如果存在,则返回表中的行,如果不存在,则不返回任何内容

您可以使用UNION

select *
from (
    select id, name from classA
    union select id, name from classB
) t
where name = 'Kate'

或者,如果您想知道在哪个表中找到了名称,

select *
from (
    select id, name, 'classA' tab from classA
    union all select id, name, 'classB' from classB
) t
where name = 'Kate'

注意:如果两个表中都存在该名称,则第二个查询将产生两行。