我知道它一定很简单,但是现在我在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’
请帮助解决我的问题
答案 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'
注意:如果两个表中都存在该名称,则第二个查询将产生两行。