mysql - 无法在内部联接上查询多个值

标签 mysql sql database wordpress

我正在使用此 sql 返回基于具有 3 个元值的内部联接的结果。它似乎只适用于 1 AND ( ),当我添加另外两个时它返回 0 个结果。

SELECT * FROM wp_posts
INNER JOIN wp_postmeta
ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE wp_posts.post_type = 'plot'
AND wp_posts.post_status = 'publish'
AND ( wp_postmeta.meta_key = 'plot_type' AND wp_postmeta.meta_value = 'Cottage' )
AND ( wp_postmeta.meta_key = 'number_of_bedrooms' AND wp_postmeta.meta_value = '2' )
AND ( wp_postmeta.meta_key = 'property' AND wp_postmeta.meta_value = '446' )
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_title ASC;

最佳答案

我认为您打算将 OR 与其他 2 个一起使用(见下文)。同一个字段不能有 2 个不同的东西,这就是为什么你会得到 0 个结果。

SELECT *
  FROM wp_posts
 INNER JOIN wp_postmeta
    ON (wp_posts.ID = wp_postmeta.post_id)
 WHERE wp_posts.post_type = 'plot'
   AND wp_posts.post_status = 'publish'
   AND ((wp_postmeta.meta_key = 'plot_type' AND
       wp_postmeta.meta_value = 'Cottage') OR
       (wp_postmeta.meta_key = 'number_of_bedrooms' AND
       wp_postmeta.meta_value = '2') OR (wp_postmeta.meta_key = 'property' AND
       wp_postmeta.meta_value = '446'))
 GROUP BY wp_posts.ID
 ORDER BY wp_posts.post_title ASC;

编辑,试试下面的方法:

select * from wp_posts
join wp_postmeta on wp_posts.ID = wp_postmeta.post_id
where wp_posts.post_type = 'plot'
  and wp_posts.post_status = 'publish'
  and concat(wp_postmeta.meta_key,'|',wp_postmeta.meta_value)
        in ('plot_type|Cottage',
           'number_of_bedrooms|2',
           'property|446');

关于mysql - 无法在内部联接上查询多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21759623/

相关文章:

php - 为什么即使我检查数据是否存在,我的表仍然插入重复数据? PHP-MYSQL

sql - SQL Server 中的 SQL 查询的长度是否有限制?

database - Oracle 的免费桌面客户端?

mysql - 本地主机已连接但数据库未与 Wamp 连接

MySQL:写入从节点

PHP MySQL 重新查询与刷新

mysql - 为什么我无法 MATCH() AGAINST() FULLTEXT 索引中的列之一?

php - 检查数据库中的大量信息

sql - 如何在 Oracle 的表中查找重复值?

mysql - SQL查询以获取与另一列的MAX值对应的列值?