【问题标题】:Error Code: 1066. Not unique table/alias: 'File'错误代码:1066。不是唯一的表/别名:“文件”
【发布时间】:2016-08-28 05:28:43
【问题描述】:

我正在使用 MySQL,我正在尝试连接两个其他表中的列并执行此查询

我正在尝试像这样排列列

  • Transaction.TransactionID
  • Transaction.TransactionDate
  • 交易金额
  • TransactionDescription.Description
  • 文件.开始日期
  • 文件.结束日期
  • 文件.文件名
SELECT Transaction.TransactionID, Transaction.TransactionDate, 
    Transaction.Amount, TransactionDescription.Description, 
    File.StartDate, File.EndDate, File.Filename
FROM Transaction
INNER JOIN TransactionDescription ON  TransactionDescription.Description = TransactionDescription.Description
INNER JOIN File ON  File.StartDate = File.StartDate
INNER JOIN File ON  File.EndDate = File.EndDate
INNER JOIN File ON  File.Filename = File.Filename
;

但是当查询被执行时我得到这个错误

Error Code: 1066. Not unique table/alias: 'File'

为什么会出现错误?

【问题讨论】:

  • 您到底想达到什么目的?你能分享一些样本数据和你想要得到的结果吗?
  • 关于连接条件的表名应该与表file不同
  • FILE 是 KEYWORD !!!!,所以必须用 BACKTICKS 引用它
  • @BerndBuffen 这是一个关键字,但不是保留字。这里不需要反引号。
  • @Álvaro González - 抱歉 100% 正确 - 我的错误

标签: mysql


【解决方案1】:

由于您的查询中有三个File 表,因此当您说File 时,MySQL 无法知道您指的是哪一个。您通常会解决分配不同表别名的问题。但是你实际上需要加入同一张桌子三次,感觉很奇怪。我的印象是你只想要一次,如:

SELECT Transaction.TransactionID, Transaction.TransactionDate, Transaction.Amount, TransactionDescription.Description
,File.StartDate, File.EndDate, File.Filename
FROM Transaction
INNER JOIN TransactionDescription ON  TransactionDescription.Description = TransactionDescription.Description
INNER JOIN File ON  File.StartDate = File.StartDate
    AND File.EndDate = File.EndDate
    AND File.Filename = File.Filename

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2020-03-06
    • 2016-02-14
    相关资源
    最近更新 更多