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
。
答
您使用的名称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
谢谢你的灯戈登 – MOWebCreation