2016-12-30 3 views
0

別のテーブルの値を使用して、ある日付をmysqlテーブルから更新する必要があります。私は私のMySQLサーバ上でこれを実行やろうとしている2つのテーブルを使用した更新

更新

update wp_posts post 
    join wp_postmeta meta 
    on post.ID = meta.post_id 
    set post.post_date = meta.false_date 
where meta.false_date <> ''; 

しかし、私は、端末

エラーに次のエラーを取得する

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'from wp_posts post, wp_postmeta meta where post.ID = meta.post_id and meta.false' at line 1 

メタ

| 7647 | 1483 | false_date     | 2016-12-30  

のSQL文

update wp_posts post 
    join wp_postmeta meta 
    on post.ID = meta.post_id 
    set post.post_date = meta.false_date 
where meta.false_date <> ''; 

エラー2

ERROR 1054 (42S22): Unknown column 'meta.false_date' in 'where clause' 

私が間違って何をしているのですか?

何か助けていただければ幸いです。

Jaster

+1

エラーメッセージは自明です。 – Strawberry

答えて

3

正しい構文は次のようになります。

update post p join 
     meta m 
     on p.id = m.post_id 
    set p.post_date = m.false_date 
    where m.false_date <> ''; 

注:

  • update MySQLではFROM句をサポートしていません。
  • 適切で明示的なJOINの構文を使用する必要があります。
  • テーブルのエイリアスを使用すると、クエリの書き込みと読み取りが容易になります。
  • 文字列と日付の定数には一重引用符を使用します。
  • 不等式の標準SQL演算子は<>です。
  • false_dateが日付として適切に格納されている場合は、比較が意味をなさないはずです。たぶん、あなたはちょうど意図している:where false_date is not null
+0

私の端末の 'ERROR 1054(42S22):Unknownカラム 'meta.false_date'の 'where句'に別のエラーがあります。また、いくつかの情報で質問を更新しましたが、すべてのエントリに 'false_date'値があるわけではありません。 –

+0

@IsmaelMoral。 。 。それを 'm.false_date'に置き換える必要があります。 –

関連する問題