mysql - WHERE 子句中的一些错误

标签 mysql sql wordpress phpmyadmin mysql-error-1054

现在我在 PhpMyAdmin 中尝试这个查询来更新 wp_postmeta 的值形式 wp_posts:

UPDATE wp_postmeta
SET meta_value = (SELECT DISTINCT id FROM wp_posts) 
WHERE EXISTS (select 1 
              from wp_posts 
              join articles on wp_posts.post_name=articles.image)
    AND (wp_posts.post_type='attachment') 
    AND (wp_postmeta.meta_key='_thumbnail_id' )

但给了我那个错误:#1054 - 'where clause' 中的未知列 'wp_posts.post_type' !

我试图改变它但没有任何好处,任何人都可以帮忙吗?

最佳答案

AND (wp_posts.post_type='attachment') 

我认为这里真正的问题是,您唯一引用 wp_posts 的地方是在您的 EXISTS 和 SET 子查询中。 WHERE 子句的那部分(上面引用的)超出了您的子查询的范围并且不知道。

除非你想让你的 EXISTS 子查询看起来像这样:

(select 1 
 from wp_posts 
 join articles on wp_posts.post_name=articles.image
 WHERE wp_posts.post_type='attachment')

在这种情况下,wp_posts 在同一组括号中被引用并且在句法上是正确的。因为这可能不会给你你想要的东西,所以试试这个:

UPDATE wp_postmeta
INNER JOIN wp_posts ON wp_posts.id = wp_postmeta.post_id
SET meta_value = (SELECT DISTINCT id FROM wp_posts WHERE [some condition]) 
WHERE EXISTS (select 1 
          from wp_posts 
          join articles on wp_posts.post_name=articles.image)
    AND (wp_posts.post_type='attachment') 
    AND (wp_postmeta.meta_key='_thumbnail_id' )

注意#1:我假设您的 wp_postmeta 表有一个 post_id 字段对应于 wp_posts 上的 id。

注意#2:正如 OMG Ponies 所说...

SET meta_value = (SELECT DISTINCT id FROM wp_posts) 

这一行很可能会抛出一个错误,因为返回多个值,而预期只有 1 个值。请注意,我在上面添加了“WHERE [某些条件]”。您需要在此处添加自己的 WHERE 子句。并且它应该是将子查询结果限制为只有一个结果的东西。

关于mysql - WHERE 子句中的一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055295/

相关文章:

css - wordpress bootstrap 导航栏下拉菜单不起作用

mysql 从其他 2 个 int 列更新 int 列,其中结果为负数

sql - 用于存储应用程序数据的跨平台数据存储?

php - 如何显示有多少访问者访问我的网站(按日期排序)

python - sqlalchemy 中的 Haversine 公式

sql - Postgresql 选择创建日期相差 2 小时的两行

php - 在 WooCommerce 中获取购物车项目变体名称而不是变体 ID

wordpress - Woocommerce 按 ID 获取产品数量(购物车中)

PHP无限循环问题

php - TCPDF 只打印最后一行