【发布时间】:2016-09-28 04:45:16
【问题描述】:
我需要列出成对的客户姓名,如下所示;
> CUSTOMER_FIRST_NAME, CUSTOMER_LAST_NAME, CUSTOMER_FIRST_NAME, CUSTOMER_LAST_NAME
这样每对客户都有相同的邮政编码(也在 customers 表中)。
在任务上有一个提示说
提示:您的输出应包含四列:CUSTOMER_FIRST_NAME、CUSTOMER_LAST_NAME、CUSTOMER_FIRST_NAME、CUSTOMER_LAST_NAME
这是我目前所写的:
SELECT DISTINCT CUSTOMER_FIRST_NAME, CUSTOMER_LAST_NAME, CUSTOMER_FIRST_NAME, CUSTOMER_LAST_NAME
FROM CUSTOMERS
WHERE CUSTOMER_ZIP = CUSTOMER_ZIP
但我不知道如何继续,因为我昨天才开始学习 SQL。我也尝试加入同一张表,导致歧义错误。
更新#1: 我已经按照@kpater87 的建议使用别名编写了这段代码
SELECT DISTINCT C1.CUSTOMER_FIRST_NAME, C1.CUSTOMER_LAST_NAME , C2.CUSTOMER_FIRST_NAME, C2.CUSTOMER_LAST_NAME
FROM CUSTOMERS C1
INNER JOIN CUSTOMERS C2
ON C1.CUSTOMER_ZIP = C2.CUSTOMER_ZIP
但即使我有一个明确的声明,它也会显示重复的数据。这是意料之中的还是我错过了什么?
【问题讨论】:
-
提示:
JOIN,ON。 -
JOIN是正确的方向。您能否在查询中显示您遇到歧义错误的地方?可能您缺少列别名。 -
加入同一张桌子是要走的路。您可能会遇到歧义错误,因为您的查询中有两个同名的表。您需要表别名,因此您可以将两个表实例视为不同的表。
-
因为您今天已经开始学习 SQL,我还将向您解释您从问题中查询的内容:
WHERE CUSTOMER_ZIP = CUSTOMER_ZIP与WHERE 1=1相同,因此它始终为 TRUE,因此您选择所有记录。然后您选择 4 列:CUSTOMER_FIRST_NAME两次和CUSTOMER_LAST_NAME两次同一客户。 -
@kpater87 我对 distinct 命令做错了吗?