簡體   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