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 に答える