如果我运行这个查询:
SELECT
wp_posts.ID,
wp_posts.post_title,
wp_posts.post_status,
wp_postmeta.meta_key
FROM
wp_posts
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
WHERE
post_type = 'product' AND
wp_postmeta.meta_key = 'cat_disabled' AND
wp_postmeta.meta_value = 'on'
我得到 5348 条记录,但做相反的事情(获取 cat_disabled
键及其值未设置的记录,它需要永远:
SELECT
wp_posts.ID,
wp_posts.post_title,
wp_posts.post_status,
wp_postmeta.meta_key
FROM
wp_posts
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
WHERE
post_type = 'product' AND
wp_postmeta.meta_key != 'cat_disabled' AND
wp_postmeta.meta_value != 'on'
如何优化此查询以获取没有设置值 cat_disabled
的 meta_key 的产品。
最佳答案
没有所有的模式和一些数据来测试,这是一个建议:
SELECT
wp_posts.ID,
wp_posts.post_title,
wp_posts.post_status,
wp_postmeta.meta_key
FROM
wp_posts
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
WHERE
post_type = 'product' AND
wp_postmeta.post_id NOT IN
(SELECT post_id
FROM wp_postmeta
WHERE meta_key = 'cat_disabled' AND
meta_value = 'on')
关于mysql - 值字段不存在 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45646246/