MySQL从多个表中选择名称

MySQL从多个表中选择名称,mysql,Mysql,我知道这一定很简单,但现在我是sql的noob,所以对我来说这并不简单。 我有两张桌子: ClassA Id Name 1 Kate 2 John B类 Id Name 1 Mark 2 Lisa 表ClassA和ClassB中的所有名称都是唯一的 所以我需要在表ClassB中插入名称“Kate”,但在此之前,我检查表ClassA和ClassB中是否已经存在Kate 若存在,则返回表中的行;若不存在,则不返回任何内容 如果用于检查,我使

我知道这一定很简单,但现在我是sql的noob,所以对我来说这并不简单。 我有两张桌子:

ClassA

Id     Name
1      Kate
2      John
B类

Id     Name
1      Mark
2      Lisa
表ClassA和ClassB中的所有名称都是唯一的

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

若存在,则返回表中的行;若不存在,则不返回任何内容

如果用于检查,我使用一个表,则结果正常:

SELECT ClassA.name FROM ClassA WHERE ClassA.name=‘Kate’
结果:

名字

凯特

但如果我签入两个表,结果将不返回任何内容。我认为这是因为ClassA返回Kate,而ClassB返回空结果

 SELECT ClassA.name, ClassB.name FROM ClassA,ClassB WHERE ClassA.name=‘Kate’ OR ClassB.name= ‘Kate’
请帮我解决问题

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

您可以使用
联合

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'

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

您是要插入还是选择?我要查找SelectSimple:不要有两个表!!!!修复损坏的模式!很明显,这个问题的缺陷——房间里的大象,如果你愿意的话——是一个次优设计。当然,SO的作用是提高我们的集体知识,并在其范围内使用各种技术,而不是为制定不当的问题提供“贴膏”解决方案。