[英]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`
如果这不能满足您的需求,请告诉我,我会尽力提供进一步帮助。
据推测,您的意图是将两个表排列在两个不同的列中。 这不是一个非常“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.