首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何创建包含空值的两个表的联合?

如何创建包含空值的两个表的联合?
EN

Stack Overflow用户
提问于 2014-08-19 00:25:50
回答 1查看 1.5K关注 0票数 2

我有两个MySQL表,“u字符”和“uplace”,这两个表都有列“u字符”。这两个表中的u字符列之间有一些重叠,但有些值对每个表都是唯一的。每个表都有用于“插曲”和“行”的列,但“uplace”表也有"place“列。这将创建此模式的一个简单版本:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE ucharacters (
  ucharacter VARCHAR(50),
  episode INT(2),
  line INT(6)
  );

CREATE TABLE uplaces (
  ucharacter VARCHAR(50),
  episode INT(2),
  line INT(6),
  place VARCHAR(40)
  );

INSERT INTO ucharacters VALUES ('Molly', 4, 123);
INSERT INTO ucharacters VALUES ('Leo', 5, 567);
INSERT INTO uplaces VALUES ('Leo', 5, NULL, 'Athens');

我希望从一个临时表中进行选择,该表将这些数据组合在一起,以便保留每个表中的每一行,并在适当情况下使用空值。其结果将是:

代码语言:javascript
代码运行次数:0
运行
复制
UCHARACTER  EPISODE LINE PLACE
Molly       4       123  NULL
Leo         5       567  NULL
Leo         7       NULL Athens

下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT tabkey.ucharacter, 

ucharacters.episode, ucharacters.line, 

uplaces.episode, uplaces.line, uplaces.place

FROM 

(SELECT ucharacters.ucharacter FROM ucharacters
 UNION ALL
 SELECT uplaces.ucharacter FROM uplaces) as tabkey

LEFT JOIN

ucharacters on tabkey.ucharacter = ucharacters.ucharacter

LEFT JOIN

uplaces on tabkey.ucharacter = uplaces.ucharacter;

这对于第一行(Molly,4,123,NULL)很好,但随后给出了两行相同的行(Leo,5,567,雅典),合并了这两个表。我怎样才能得到上面输入的结果呢?

http://sqlfiddle.com/#!2/a7013e/1

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-19 00:51:21

我希望从一个临时表中进行选择,该表将这些数据组合在一起,以便保留每个表中的每一行>,并酌情使用空值。其结果将是:

如果你只想这么做,你就不能简单地使用下面的查询吗?

代码语言:javascript
代码运行次数:0
运行
复制
SELECT ucharacter, episode, line, null FROM ucharacters
UNION ALL
SELECT ucharacter, episode, line, place FROM uplaces;

http://sqlfiddle.com/#!2/a7013e/17/0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25373992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档