SQLSTATE错误语法错误或访问冲突:1066非唯一表/别名:'users_sessions'

SQLSTATE错误语法错误或访问冲突:1066非唯一表/别名:'users_sessions'

问题描述:

我遇到了使用连接的简单查询的错误。SQLSTATE错误语法错误或访问冲突:1066非唯一表/别名:'users_sessions'

我的查询:

SELECT users_sessions.user_id AS users_sessions_user_id, 
     users.last_name AS users_last_name, 
     users.first_name AS users_first_name 
FROM prefix_users_sessions AS users_sessions, 
    prefix_users AS users INNER JOIN 
    users_sessions 
    ON users.id = users_sessions.user_id 

我的错误:

SQLSTATE [42000]:语法错误或访问冲突:1066不是唯一 表/别名: 'users_sessions'

我不明白这条消息......我看不到别名在哪里使用。

谁能帮我解决这个问题?

谢谢您的帮助。

--SOLVED--

好查询如下:

SELECT users_sessions.id AS users_sessions_id, 
      users_sessions.user_id AS users_sessions_user_id, 
      users.lastname AS users_lastname, users.firstname AS 
      users_firstname 
    FROM prefix_users_sessions AS users_sessions 
      JOIN prefix_users AS users ON users.id = users_sessions.user_id 

from条款是全乱了。一个简单的规则:从不FROM子句中使用逗号。 总是使用明确的JOIN语法。

此外,使用短表的别名,以便您的查询更容易编写和阅读:

SELECT us.user_id AS users_sessions_user_id, 
     u.last_name AS users_last_name, 
     u.first_name AS users_first_name 
FROM prefix_users_sessions us INNER JOIN 
    prefix_users u 
    ON u.id = us.user_id; 

这里假设你没有真正有一个表叫users_sessions,并且其目的是使用一个表称为prefix_users_sessions

+0

谢谢你的灯戈登 – MOWebCreation

您使用的名称users_sessions两次。 首先作为prefix_users_sessions的别名,然后作为INNER JOIN中的普通表。也可以尝试使用INNER JOIN秒且不同时从e.g两个表中选择(查询):

FROM prefix_users_sessions AS users_sessions, prefix_users AS users 

您指定的表prefix_users_sessions两次

SELECT users_sessions.user_id AS users_sessions_user_id, 
     users.last_name AS users_last_name, 
     users.first_name AS users_first_name 
FROM prefix_users_sessions AS users_sessions 
     INNER JOIN prefix_users AS users 
      ON users.id = users_sessions.user_id