2011-09-09 14 views
0

CentOSの4または5に存在しないことを私に語った:MySQLは、フィールドが存在しないことを主張し、それは、MySQL 5.0.77で、

mysql> UPDATE 
    -> `userTable` 
    -> INNER JOIN `anotherTable` 
    -> ON `userTable.userid`=`anotherTable.userid` 
    -> SET `userTable.someField`="Jimmy Page" 
    -> WHERE `userTable.someField`="Jim Morrison" 
    -> AND `anotherTable.date` < NOW(); 
ERROR 1054 (42S22): Unknown column 'userTable.someField' in 'field list' 
mysql> 
mysql> SELECT count(someField) FROM userTable; 
+---------------+ 
| count(someField) | 
+---------------+ 
|   5076 | 
+---------------+ 
1 row in set (0.00 sec) 

mysql> 

私はマウス - でSELECTステートメントにsomeFieldとUSERTABLEを入力しましたターミナルでコピー/貼り付けをするので、誤植ではありません。ここで何が問題になるのでしょうか?

ありがとうございます!

+0

バックティックによるものと思われます。それらを削除してみてください。 – ajreal

答えて

6

目盛りは、列とテーブル名を引用するために使用されます。引用符で囲まれた点では、それは部品間の仕切りとしては見えません。それを修正するためにいくつかの目盛りを追加してください。

UPDATE 
    `userTable` 
INNER JOIN `anotherTable` 
    ON `userTable`.`userid`=`anotherTable`.`userid` 
SET `userTable`.`someField`="Jimmy Page" 
WHERE `userTable`.`someField`="Jim Morrison" 
    AND `anotherTable`.`date` < NOW(); 
+1

またはdunはバックティックを一切使用しません。 – ajreal

+0

フィールドの1つが「日付」であることを考慮すると、バックティックを使用する必要があります。そうでなければ、あなたの権利。それはあまりにも多く持っています。 – rrehbein

+0

fyiの日付が予約されていないmysql.itの単語は、予約されたキーワードを列またはテーブルの名前として使用するときの設計上の問題です。 – ajreal

関連する問題