使用两个表更新

时间:2016-12-30 19:22:50

标签: mysql wordpress

我需要使用另一个表中的值从mysql表更新一个日期。

我试图在我的mysql服务器上执行此操作,

更新

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'

我做错了什么?

任何帮助都会受到赞赏,

雅斯特尔。

1 个答案:

答案 0 :(得分:3)

正确的语法如下所示:

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

注意:

    MySQL中的
  • update不支持FROM子句。
  • 您应该使用正确的,明确的JOIN语法。
  • 表别名使查询更易于编写和阅读。
  • 对字符串和日期常量使用单引号 - 没有别的。
  • 不等式的标准SQL运算符是<>
  • 如果false_date被正确存储为日期,那么您的比较应该毫无意义。也许你只是打算:where false_date is not null