sql - 将 2 个表加入 1 个表
问题描述
我有一个 Customer 和 Customer_2 表,我试图将它们连接在一起:
两个表中都有数据,但在加入语句后,只返回列名而不返回数据。我正在尝试使用以下联接语句:
select distinct *
from Customer c
join Customer_2 d on c.CUST_NUM = d.CUST_NUM
这些是表格:
CREATE TABLE [Customer]
(
[CUST_NUM] [INT] NOT NULL,
[CUST_LNAME] [VARCHAR](50) NULL,
[CUST_FNAME] [VARCHAR](50) NULL,
CUST_BALANCE [MONEY] NOT NULL,
)
ON [PRIMARY]
CREATE TABLE [Customer_2]
(
[CUST_NUM] [INT] NOT NULL,
[CUST_LNAME] [VARCHAR](50) NULL,
[CUST_FNAME] [VARCHAR](50) NULL,
)
ON [PRIMARY]
每个表中的数据:
INSERT INTO Customer
VALUES
('1000', 'Smith', 'Jeanne', '1050.11'),
('1001', 'Ortega', 'Juan', '840.92');
INSERT INTO CUSTOMER_2
VALUES
('2000', 'McPherson', 'Anne'),
('2001', 'Ortega', 'Juan'),
('2002', 'Kowalski', 'Jan'),
('2003', 'Chan', 'George');
预期的输出会将 customer_2 组合到 customer 表的底部,对于CUST_BALANCE
customer 2 表上的四个客户中的每一个,额外的列都是 0 或 null。所需的输出还应排除 Juan Ortega 的第二个条目或CUSTOM_NUM
2001 年在哪里
解决方案
您可以使用 UNION ALL 进行此操作。IE:
select cust_num, cust_fname, cust_lname, balance from Customer
union all
select cust_num, cust_fname, cust_lname, 0 from Customer_2 c2
where not exists (select * from Customer c
where c.cust_fname = c2.cust_fname and c.cust_lname = c2.cust_lname);
PS:可能不是官方术语而是join,垂直连接表,而union [all]水平连接。
推荐阅读
- javascript - 用字符串中的标记替换所有内容:Javascript
- netezza - 因为执行这个脚本给了我这个错误?发现声明(在字符 1 处)需要关键字 netezza
- c# - WPF 将命令绑定到带有命令参数的列表视图
- java - 无法使用 java 在 IE 中获取新打开的窗口的句柄
- c# - 在 C# 中,我试图显示 2 个日期时间选择器之间的天数,包括选择的天数,但如果我选择今天的日期,它不会添加 1 天
- c# - 检测 USB 脚踏板按钮按下
- python - DataBricks:火花数据框的数据透视表
- r - 产量杂草密度自启动功能 ('DRC.cousens85()') 无法正常工作
- c# - 通过属性名称从 JSON 获取值时如何处理 System.ArgumentOutOfRangeException 错误
- join - HIVE:如何仅从两个表中的两列中选择第三个表中不存在的不同值?