1

我的布局有点(简化):

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
4

3 回答 3

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'

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

于 2012-10-27T09:10:35.307 回答
0
SELECT users.userid FROM `users` 
INNER JOIN `auth` on users.lastauth = auth.authid 
WHERE auth.token='1234567890abcdef'
于 2012-10-27T09:07:31.417 回答
0

将查询更改为:

SELECT users.userid FROM users INNER JOIN auth on users.lastauth = auth.authid WHERE auth.token='123abc';
于 2012-10-27T09:10:51.640 回答