Mysql SQLSTATE错误语法错误或访问冲突:1066非唯一表/别名:';用户会话';
我在使用联接的简单查询中出错 我的问题是:Mysql SQLSTATE错误语法错误或访问冲突:1066非唯一表/别名:';用户会话';,mysql,sql,select,join,mysql-error-1066,Mysql,Sql,Select,Join,Mysql Error 1066,我在使用联接的简单查询中出错 我的问题是: 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
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不唯一
表/别名:“用户会话”
我不明白这个信息。。。我看不出这个别名在哪里用得更多
谁能帮我解决这个问题
提前感谢你的帮助
--解决--
好的查询如下所示:
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
您使用name
users\u sessions
两次。
首先作为前缀用户会话的别名,然后作为内部联接中的普通表。另外,请尝试使用内部联接
s,不要同时从两个表中进行选择,例如(在您的查询中):
您指定了两次表前缀用户\u会话
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
你的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\u sessions
的表,目的是使用一个名为prefix\u users\u sessions
的表来感谢您的支持
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;