加入 3 个表时出现错误 1066

Posted

技术标签:

【中文标题】加入 3 个表时出现错误 1066【英文标题】:error 1066 while joining 3 tables 【发布时间】:2014-06-14 07:49:04 【问题描述】:

现在有以下问题。我正在尝试使用以下查询从 3 个表中获取数据。

SELECT Message, Name
FROM message, users
LEFT JOIN user_message ON ID = Message_id
LEFT JOIN user_message ON ID = User_id
WHERE user_message.status = 1
LIMIT 0 , 30

在这里我收到错误 1066 我错过了什么?

【问题讨论】:

Why does this SQL code give error 1066 (Not unique table/alias: 'user')? 的可能重复项 你需要给表(和字段)起别名,否则 mysql 无法确定,例如 which user_message.status 你在说什么。此外,查询可能有一个 JOIN 太多。请参阅 Saharsh Shah 的回答。 【参考方案1】:

试试这个:

SELECT m.Message, u.Name
FROM message m
INNER JOIN user_message um ON m.ID = um.Message_id
INNER JOIN users u ON u.ID = um.User_id
WHERE um.status = 1
LIMIT 0, 30;

【讨论】:

【参考方案2】:

您需要提供别名并像这样尝试

SELECT t1.Message, t2.Name
FROM message as t1
LEFT JOIN user_message as t2 ON t2.ID = t1.Message_id 
LEFT JOIN users as t3. ON t3.ID = t2.User_id
WHERE t3.status = 1
LIMIT 0 , 30

【讨论】:

以上是关于加入 3 个表时出现错误 1066的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 迁移第二个表时出现数据库迁移错误

在 2 个不同的服务器上加入 2 个表

在做SSH2框架时出现的错误:

在 codeigniter 中加入超过 2 个数据库表错误:1066

出现错误.. 从 .net 4.0 转换为 .net 3.5 时出现错误。

尝试加入提取日期和月份时出现 SQL 错误