此问题已在此处有答案:
SQL: Remove duplicate columns when joining tables with large number of columns(2个答案)
6天前关闭
当我提交这个查询(来自codeacademy course)时,我得到了两个customer_id列,我不明白为什么,以及如何删除dupe列?
Screen cap of tables
WITH previous_results AS (
SELECT customer_id, COUNT(customer_id) FROM orders
GROUP BY customer_id
)
SELECT * FROM previous_results
JOIN customers
ON previous_results.customer_id = customers.customer_id;
2条答案
按热度按时间busg9geu1#
在查询结果中获得两个customer_id列的原因是,您选择了previous_results和customers表中的所有列。由于两个表都有一个customer_id列,因此最终会得到两个同名的列。
要删除重复的customer_id列,需要显式列出要选择的列,并排除其中一个customer_id列。如果需要,可以使用SQL AS关键字重命名选定的列。
下面是查询的更新版本,它只选择必要的列并重命名它们以避免重复的列名:
在这个版本中,我们只从customers表中选择customer_id和name列,从previous_results子查询中选择customer_id和order_count列。我们还使用AS关键字将COUNT(customer_id)列重命名为order_count,这使得更容易读取查询结果。
qc6wkl3g2#
您使用的是SELECT *,并且CTE“previous_results”和customer表中都存在Customer_ID。SELECT * 将返回这两个表中的所有列。请指定列名。