我的布局(简化):
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
答案 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';