mysql - 如何从一个字段中的 2 个表中获取 2 个字段值的并集?

标签 mysql left-join union

正在寻找一些 sql 查询专家的帮助。

我很难解决以下 sql 语句中的问题。这是一条3张表的join sql语句。我需要来自人员和校友表的类似数据。并且两个表中的字段名称也相同。所以我的问题是 - 我是否可以在单个字段中获取类似的数据?

SELECT DISTINCT P.people_id, P.Name,P.Journal_name,  N.People_id, N.Name, N.Journal_name
FROM  `Paper_Author` AS A
LEFT JOIN  `People` AS P ON ( A.Author_id = P.people_id ) 
LEFT JOIN  `Alumni` AS N ON ( A.Author_id = N.People_id ) 
WHERE A.Paper_id =2067
ORDER BY A.Author_sortorder
LIMIT 0 , 30

例如当前结果是:

   Id--  Name--  Journal_name-- ID2-- Name--  Journal_name 
    1   Name1      A1          NULL   NULL           NULL
    2   Name2      B1            5    Name10         NULL
    3   Name3      C1            3    Name3          C1

预期结果:

   Id--  Name--  Journal_name--  
    1    Name1      A1          
    2    Name2      B1          
    3    Name3      C1                
    5    Name10    NULL

我想知道我是否可以在单个字段中获得相似的值?例如:单个字段中的两个 Journal_name?

最佳答案

A UNION应该为这个任务工作。使用 UNION 语句,您将在一个结果集中获得两个结果:

SELECT DISTINCT P.people_id, P.Name, P.Journal_name, AP.Author_sortorder
FROM `Paper_Author` AS AP
LEFT JOIN  `People` AS P ON ( A.Author_id = P.people_id )  
WHERE AP.Paper_id = 2067
UNION
SELECT DISTINCT N.People_id, N.Name, N.Journal_name, AN.Author_sortorder
FROM `Paper_Author` AS AN
LEFT JOIN `Alumni` AS N ON ( A.Author_id = N.People_id ) 
WHERE AN.Paper_id = 2067
ORDER BY Author_sortorder

关于mysql - 如何从一个字段中的 2 个表中获取 2 个字段值的并集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47467841/

相关文章:

mysql - 如何对所有标题进行求和,即使其他标题为空

mysql - 是我的代码问题还是 Sidekiq 速度慢,因为它不应该访问 Rails 模型?

r - 在条件下加入两个数据帧(grepl)

mysql - 多个 AND 在同一个连接表列上

php - mysqli_use_result() 和并发性

mysql - Firebird 数据库上的 Haversine 公式

mysql - 我不确定 : Is this an anti-join?

mysql - 如何修复 mysql 错误号 #1250 SELECT 之一的表 'a1' 不能在字段列表中使用?

MySQL:按第二个表中的值排序,如果未设置值,则使用默认值

c# - 如何联合两个数据表并对结果进行排序