Mysql 我有一个SQL 1066-非唯一表/别名:
我有三张桌子Mysql 我有一个SQL 1066-非唯一表/别名:,mysql,sql,Mysql,Sql,我有三张桌子 1个项目 2项目id、活动id 3活动 我需要在所有这些表中搜索join,我试图使en-inner连接我不断得到 1066-非唯一表/别名:“pp086_项目” 我正在寻找“下九个”,它正在竞选中 我的SQL查询是: SELECT * FROM `PP086_projects`, `PP086_project_users`,pp086_project_companies JOIN `PP086_projects` ON `PP086_projects`.id = pp086_pro
1个项目
2项目id、活动id
3活动
我需要在所有这些表中搜索join,我试图使en-inner连接我不断得到 1066-非唯一表/别名:“pp086_项目” 我正在寻找“下九个”,它正在竞选中 我的SQL查询是:
SELECT * FROM `PP086_projects`, `PP086_project_users`,pp086_project_companies
JOIN `PP086_projects` ON `PP086_projects`.id = pp086_project_companies.project_id
JOIN pp086_project_companies ON pp086_companies.id==pp086_project_companies.company_id
WHERE (`PP086_projects`.`id` = `PP086_project_users`.`project_id`
AND `PP086_project_users`.`user_id` = '2')
AND ( name LIKE '%Next Nine%'
OR name LIKE 'Next Nine'
OR description LIKE 'Next Nine'
OR pp086_project_companies.name LIKE 'Next Nine' )
您可以多次使用
PP086_项目
表。您应该为它的不同实例添加别名。
这是不明确的,例如:PP086_projects.id
或者,如果这是无意的,您可能应该将表名从中删除,如下所示:
SELECT * FROM `PP086_projects`
JOIN `PP086_project_users` ON `PP086_projects`.`id` = `PP086_project_users`.`project_id`
JOIN `pp086_project_companies` ON `PP086_projects`.id = pp086_project_companies.project_id
JOIN pp086_companies ON pp086_companies.id== pp086_project_companies.company_id
WHERE ( AND `PP086_project_users`.`user_id` = '2') AND ( name LIKE '%Next Nine%'
OR name LIKE 'Next Nine'
OR description LIKE 'Next Nine'
OR pp086_project_companies.name LIKE 'Next Nine' )
您混合了隐式和显式
join
语法。因此,您已经两次将表PP086_projects
放入from
子句中。这可能是你的问题的原因
作为一条简单的规则,不要在from
子句中使用,
。如果需要交叉连接,请明确使用交叉连接
:
SELECT *
FROM `PP086_projects` join
`PP086_project_users`
on `PP086_projects`.`id` = `PP086_project_users`.`project_id`
pp086_project_companies
ON `PP086_projects`.id = pp086_project_companies.project_id JOIN
pp086_project_companies
ON pp086_companies.id = pp086_project_companies.company_id
WHERE (`PP086_project_users`.`user_id` = '2') AND
( name LIKE '%Next Nine%'
OR name LIKE 'Next Nine'
OR description LIKE 'Next Nine'
OR pp086_project_companies.name LIKE 'Next Nine'
);
注意:我删除了sql server标记,因为语法建议使用MySQL。您正在混合新旧样式的联接。可能您应该将最新的pp086_项目公司联接更改为pp086_公司。至少加入了2次pp086_项目公司,但pp086_公司未加入,并且也使用了最新的公司。我有相同的错误1066-表/别名不唯一:“pp086_项目公司”