我知道这一定很简单,但现在我是 sql 菜鸟,所以对我来说这并不简单。 我有 2 张 table :
A类
Id Name
1 Kate
2 John
B类
Id Name
1 Mark
2 Lisa
表 ClassA 和 ClassB 中的所有名称都是唯一的。
所以我需要插入表ClassB名称“Kate”,但在此之前我检查Kate是否已存在于表ClassA和ClassB中。
如果存在,则从表中返回行,如果不存在,则不返回任何内容
如果我使用一张表进行检查,结果就可以了:
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’
请帮助解决我的问题
最佳答案
I check if Kate already exist in tables ClassA and ClassB. If exist, then return line from table, if not exist then return nothing
您可以使用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'
注意:如果两个表中都存在该名称,则第二个查询将生成两行。
关于MySQL从多个表中选择名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59209418/