繁体   English   中英

Mysql:Select 不同,来自不同表的相同列名

[英]Mysql: Select distinct, same column names from different tables

我已经搜索了类似的问题,但找不到我想要的。 我有 2 张桌子:

|-------ITEMS--------|    |------PEOPLE--------|
|   id    |   name   |    |   id    |   name   |
|--------------------|    |--------------------| 
|   1     |   item1  |    |   1     | person1  |
|   2     |   item2  |    |   2     | person2  |
|   3     |   item3  |    |--------------------|    
|   4     |   item4  |    
|   5     |   item5  |
|--------------------|

我需要一个将返回以下内容的查询:

|--------------------|  
|  items  |  people  |  
|--------------------|  
| item1   | person1  |  
| item2   | person2  |  
| item3   |          |  
| item4   |          |    
| item5   |          |
|--------------------|

请问如何构造这样的查询?

@AllenS 您需要像这样使用LEFT JOIN

SELECT `i`.`name` AS `items`,
    `p`.`name` AS `people`
FROM `ITEMS` AS `i`
LEFT JOIN `PEOPLE` AS `p` ON `p`.`id` = `i`.`id`

这是您的表格和在 db-fiddle 上模拟的答案。

如果这不能满足您的需求,请告诉我,我会尽力提供进一步帮助。

据推测,您的意图是将两个表排列在两个不同的列中。 这不是一个非常“SQL”的事情,但您可以使用row_number()和聚合来做到这一点:

select max(item) as item, max(person) as person
from ((select i.name as item, null as person, row_number() over (partition by id) as seqnum
       from items i
      ) union all
      (select null, p.name, row_number() over (partition by id) as seqnum
       from people p
      )
     ) ip
group by seqnum

  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM