MySQL从多个表中选择名称

标签 mysql

我知道这一定很简单,但现在我是 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/

相关文章:

mysql - 包含 Null 值的最大记录作为最大记录

mysql - 用符号导入mysql

mysql - 按月分组,即从开始时间戳起 30 天而不是实际月份分组

php - 带有 Google map 示例的 Google PHP/MySQL 中的 Javascript 错误

mysql - 不使用聚合函数从一张表中减少一行中的多个记录

MYSQL FULLTEXT 多关键字搜索

mysql - Yii2 迁移以增加列长度

MySQL加载数据语句

php - 长时间 sleep 后更新不起作用

php - 需要帮助将 ID 值从一个表插入到 PHP 中的下一个表中