MySQL从多个表中选择名称
我知道这一定很简单,但现在我是sql的noob,所以对我来说这并不简单。 我有两张桌子: ClassAMySQL从多个表中选择名称,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 若存在,则返回表中的行;若不存在,则不返回任何内容 如果用于检查,我使
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的作用是提高我们的集体知识,并在其范围内使用各种技术,而不是为制定不当的问题提供“贴膏”解决方案。