mysql - 另一个 MySQL 1066。不是唯一的表/别名 : 'events' when selecting from multiple tables

标签 mysql

我已经阅读了几篇有关此问题的 SO 帖子,但我仍然不理解解决方案。我想我只是遗漏了一些能让它正常工作的小东西:

#1066 - Not unique table/alias:

#1066 - error not unique table alias

#1066 - Not unique table/alias: 'tb_X'

这是我尝试过的查询的一个变体,如果我运行它,MySQL Workbench 6.1 就会进入 la-la-land,我必须取消查询。

SELECT `events`.`DateTime`, `events`.`User`, `eventdetails`.`ItemName`, `eventdetails`.`ItemValue`
FROM `events`, `eventdetails`
INNER JOIN `events` events1 ON `events1`.`Event_ID` = `eventDetails`.`Event_ID` 
WHERE `events`.`PCBID` = 12946
ORDER BY `events`.`DateTime` DESC;

这个变体在标题中给我 1066 错误:

SELECT `events`.`DateTime`, `events`.`User`, `eventdetails`.`ItemName`, `eventdetails`.`ItemValue`
FROM`events`,   `eventdetails`
INNER JOIN `events` ON `events`.`Event_ID` = `eventDetails`.`Event_ID` 
WHERE `events`.`PCBID` = 12946
ORDER BY `events`.`DateTime` DESC;

我知道我正在使用 events 表两次,但似乎无法获得不会超时的可用版本。

我的数据:

“事件”结果应来自这些行:

Event_ID    | PCBID | EventType_ID  | DateTime              | User
73819       | 12946 | 1             | 03-Sep-09 07:10:07    | USERNAME
73992       | 12946 | 1             | 11-Sep-09 06:51:09    | USERNAME
74159       | 12946 | 1             | 16-Sep-09 07:22:49    | USERNAME
74445       | 12946 | 1             | 08-Jan-10 13:41:16    | USERNAME

'eventdetails' 结果应该来自这些行:

EventDetails_ID | Event_ID  | ItemName          | ItemValue
37595           | 73819     | SBESerialNumber   | 70000862 
37948           | 73992     | Notes             | Passed IMM Cold Test B 
38115           | 74159     | Notes             | passed UCSD specific timing test 
38423           | 74445     | SBESerialNumber   | 00000000 

期望的结果:

我正在寻找的结果应该是这样的:

DateTime            | User      | ItemName          | ItemValue
03-Sep-09 07:10:07  | USERNAME  | SBESerialNumber   | 70000862 
11-Sep-09 06:51:09  | USERNAME  | Notes             | Passed IMM Cold Test B 
16-Sep-09 07:22:49  | USERNAME  | Notes             | passed UCSD specific timing test 
08-Jan-10 13:41:16  | USERNAME  | SBESerialNumber   | 00000000 

最佳答案

你不需要加入 events 两次。

SELECT `events`.`DateTime`, `events`.`User`, `eventdetails`.`ItemName`, `eventdetails`.`ItemValue`
FROM `eventdetails`
INNER JOIN `events` ON `events`.`Event_ID` = `eventDetails`.`Event_ID` 
WHERE `events`.`PCBID` = 12946
ORDER BY `events`.`DateTime` DESC;

DEMO

关于mysql - 另一个 MySQL 1066。不是唯一的表/别名 : 'events' when selecting from multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533324/

相关文章:

mysql - 我可以强制 Yii 在生成的 SQL 中使用特定的别名吗

MySQL 连接适用于 Workbench,但不适用于使用相同凭据的 Tomcat 应用程序

两个不同表的 mySQL View ?

mysql - 将 Django 数据库后端从 MySql 更改为 PostgreSQL

php - 更新和删除特定记录

Mysql查询,比较表结果

mysql - 在同一查询中使用动态数据库名称而不使用存储过程

mysql - 如何更改 MySQL 用于创建数据库目录和文件的权限?

php - 从数据库表中的ID获取长Post URL

mysql - Vagrant:如果共享/var/lib/mysql,mysql 不会启动