首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >where子句中同一字段的多次MySQL查询

where子句中同一字段的多次MySQL查询
EN

Stack Overflow用户
提问于 2018-10-25 07:25:48
回答 1查看 150关注 0票数 1

我想多次使用同一个字段。我厌倦了一个查询,但没有得到正确的结果。

这是我的数据库结构:

wp_postmeta:

wp_posts:

以下是我的查询:

代码语言:javascript
复制
SELECT wp.ID FROM wp_postmeta wpm 
LEFT JOIN 
wp_posts wp ON (wp.ID = wpm.post_id) 
WHERE  
wp.post_parent=7886 AND 
wpm.meta_key = 'attribute_pa_size' AND 
wpm.meta_value="l" AND 
wpm.meta_key = 'attribute_pa_with-bro-kalam-blouse' AND 
wpm.meta_value="no"

这里我想得到结果ID 7951

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 07:33:32

您需要在这里进行某种聚合,以隔离元表中的键和值。像这样的事情应该有效:

代码语言:javascript
复制
SELECT wp.ID
FROM wp_postmeta wpm 
LEFT JOIN wp_posts wp
    ON wp.ID = wpm.post_id
WHERE  
    wp.post_parent = 7886
GROUP BY
    wp.ID
HAVING
    MAX(CASE WHEN wpm.meta_key = 'attribute_pa_size'
             THEN wpm.meta_value END) = 'l' AND
    MAX(CASE WHEN wpm.meta_key = 'attribute_pa_with-bro-kalam-blouse'
             THEN wpm.meta_value END) = 'no';

要了解上述枢轴技巧是如何工作的,请考虑以下(单个)键和值表:

代码语言:javascript
复制
ID | meta_key                           | meta_value
1  | attribute_pa_size                  | l
1  | attribute_pa_with-bro-kalam-blouse | no
2  | attribute_pa_size                  | l
2  | attribute_pa_with-bro-kalam-blouse | yes

通过在ID上聚合,我们可以为我们想要的任何键找出值。例如,要检查attribute_pa_with-bro-kalam-blouse键的值,我们可以使用:

代码语言:javascript
复制
MAX(CASE WHEN meta_key = 'attribute_pa_with-bro-kalam-blouse'
         THEN meta_value END)

这是因为MAX计算的值要么是NULL (当行没有正确的键时),要么是键匹配时的meta_value。注意,MAX (和大多数聚合函数)忽略NULL值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52983626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档