MySQL内部连接的查询错误和位置

时间:2012-10-27 09:02:56

标签: mysql sql syntax

我的布局(简化):

users table
|userid|lastauth|

当用户登录时,lastauth将更改为新登录令牌的authid。

auth table
|authid|token|

给定一个令牌,我想找出它属于哪个用户ID。我不确定我是否正确使用INNER JOIN,但是这个SQL发出错误:

SELECT users.userid 
FROM 'users' 
  INNER JOIN 'auth' on users.lastauth = auth.authid 
WHERE auth.token=1234567890abcdef

3 个答案:

答案 0 :(得分:2)

不要对对象名称使用单引号。它们仅用于字符文字(您没有使用它们):

SELECT users.userid 
FROM users 
  INNER JOIN auth on users.lastauth = auth.authid 
WHERE auth.token = '1234567890abcdef'

你可能会把它与MySQL中那些可怕的反叛混合起来:

SELECT users.userid 
FROM `users`
  INNER JOIN `auth` on users.lastauth = auth.authid 
WHERE auth.token = '1234567890abcdef'

但由于您的表名不是保留字,因此您的对象名称周围不需要任何类型的引号。

答案 1 :(得分:0)

SELECT users.userid FROM `users` 
INNER JOIN `auth` on users.lastauth = auth.authid 
WHERE auth.token='1234567890abcdef'

答案 2 :(得分:0)

将查询更改为:

SELECT users.userid FROM users INNER JOIN auth on users.lastauth = auth.authid WHERE auth.token='123abc';