mysql - 如何解决 ERROR 1060 : Duplicate column name using Views -> Create View

标签 mysql sql view

我正在尝试通过加入 Sakila 数据库 ( https://dev.mysql.com/doc/sakila/en/ ) 中的一些表(在 MySQL 中)来创建一个 View ,即我想加入付款、员工和客户并显示客户姓名、员工姓名、付款 ID和金额。 我右键单击 View ,然后单击创建表。 我认为存在此错误是因为在员工表和客户表中都有名为 first_name 和 last_name 的列。我该如何解决这个问题?

我的代码:

CREATE VIEW `payment` AS
SELECT payment.payment_id, customer.first_name, customer.last_name, 
staff.first_name, staff.last_name, payment.amount
FROM payment INNER JOIN customer ON payment.customer_ID = customer.customer_ID
INNER JOIN staff ON payment.staff_ID = staff.staff_ID

错误信息: 错误 1060:重复的列名“first_name”

如果我尝试使用别名,正如一些回答者所建议的那样,我会收到错误 ERROR 1347: 'sakila.payment' is not VIEW。

完全相同的代码在 SQL 文件中就像一个魅力,当我运行它时,它会创建我需要的表。这两种方法有什么区别?我应该使用哪一个?为什么它不能与 Views -> Create View 选项一起使用?

提前谢谢你。

最佳答案

使用别名分配名称:

CREATE VIEW v_payment AS
    SELECT p.payment_id, c.first_name as customer_first_name, c.last_name as customer_last_name,
           s.first_name as staff_first_name, s.last_name as staff_last_name,
           p.amount
    FROM payment p INNER JOIN
         customer c
         ON p.customer_ID = c.customer_ID INNER JOIN
         staff s
         ON p.staff_ID = s.staff_ID;

first_namelast_name 在您的 select 列表中出现两次。以上阐明了该名称是为客户还是员工。

关于mysql - 如何解决 ERROR 1060 : Duplicate column name using Views -> Create View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687011/

相关文章:

php - 在安装 PHP 时设置 MySQL 配置数据

java - 提交前的 SQL 外键

sql - Excel导入Access

Cakephp-从数据库中随机选择并查看

java - 如何在eclipse中创建包含SWT组件的 View ?

mysql - 删除了所有MySQL数据库,包括mysql,如何恢复?

mysql - 如何在这个sql表中找到所有员工访问过的位置?

sql-server - 而不是触发器来更新具有多个表的 View

PHP 不显示表中的所有行

sql - INSERT INTO 语句中的 ADOQuery SQL 语法错误