首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在主查询中添加以选择子查询的多个值

如何在主查询中添加以选择子查询的多个值
EN

Stack Overflow用户
提问于 2014-12-22 06:40:03
回答 3查看 65关注 0票数 1

查询:

代码语言:javascript
运行
复制
SELECT *
FROM `wp_posts`
WHERE `ID`
IN GROUP_CONCAT(
(
SELECT post_id
FROM `wp_postmeta`
WHERE `meta_key` = 'friday_happy_hour_start_time'
AND `meta_value` <= '9'
) && (
SELECT post_id
FROM `wp_postmeta`
WHERE `meta_key` = 'friday_happy_hour_end_time'
AND `meta_value` >= '9'
)
)

Subquery 1和2具有多个结果,因此我使用了GROUP_CONCAT()。但这是行不通的。我要所有9等于的帖子,或者是meta_value('s) of meta_key = 'friday_happy_hour_end_time‘和meta_key =’meta_key_高兴小时_start_time‘之间的帖子。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-22 06:48:28

不需要使用group_concat和多个子查询,这可以很容易地通过与posts一起加入wp_postmeta两次并定义条件来完成。

代码语言:javascript
运行
复制
SELECT p.* 
FROM `wp_posts` p
JOIN wp_postmeta m ON(p.ID = m.post_id)
JOIN wp_postmeta m1 ON(p.ID = m1.post_id)
WHERE m.`meta_key` = 'friday_happy_hour_start_time' 
AND m1.`meta_key` = 'friday_happy_hour_end_time' 
AND m.`meta_value` <= '9' 
AND m1.`meta_value` >= '9'
票数 0
EN

Stack Overflow用户

发布于 2014-12-22 07:28:21

我认为,与使用group_contact不同,您可以在这样一个子查询中实现您想要的结果。括号是这里的重要因素。

代码语言:javascript
运行
复制
SELECT *
FROM `wp_posts`
WHERE `ID`
IN (
SELECT post_id
FROM `wp_postmeta`
WHERE 
(`meta_key` = 'friday_happy_hour_start_time' AND `meta_value` <= '9')  
OR 
(`meta_key` = 'friday_happy_hour_end_time' AND `meta_value` >= '9')

)-- End of IN
票数 0
EN

Stack Overflow用户

发布于 2014-12-22 08:25:33

代码语言:javascript
运行
复制
SELECT *
FROM `wp_posts`
WHERE `ID` IN (
    SELECT DISTINCT post_id
    FROM `wp_postmeta`
    WHERE `meta_key` = 'friday_happy_hour_start_time'
    AND `meta_value` <= '9'

    UNION DISTINCT 

    SELECT DISTINCT post_id
    FROM `wp_postmeta`
    WHERE `meta_key` = 'friday_happy_hour_end_time'
    AND `meta_value` >= '9'
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27597669

复制
相关文章

相似问题

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