mysql - 在 WordPress 自定义 SELECT 查询中使用 MIN

标签 mysql wordpress greatest-n-per-group

我正在尝试创建自定义 SELECT 查询以从 WordPress 自定义类型中查找我的个人最佳比赛,其中时间是自定义元字段。

这是我用来选择帖子的查询。我已将其简化以进行调试,但最终我想选择几个术语 slug 并使用 GROUP BY 为每个术语找到 MIN:

        SELECT      t.slug,
                    p.ID, 
                    p.post_date,
                    p.post_title,                    
                    m.meta_value as pb_mins
        FROM        $wpdb->posts p,
                    $wpdb->postmeta m,
                    $wpdb->term_relationships tr,
                    $wpdb->term_taxonomy tt,
                    $wpdb->terms t
        WHERE       p.ID = tr.object_id
                AND p.ID = m.post_id
                AND tr.term_taxonomy_id = tt.term_taxonomy_id
                AND tt.term_id = t.term_id
                AND p.post_type = 'runs'
                AND m.meta_key = 'ssr_duration_min'
                AND t.slug in ('10mi')

(我正在将结果输出到数组并使用 print_r 临时检查它。)

这会选择两个带有“10mi”项的比赛/运行,并为它们显示正确的时间/日期/标题。

当我添加 MIN 函数时,问题就来了:

        SELECT      t.slug,
                    p.ID, 
                    p.post_date,
                    p.post_title,                    
                    MIN(m.meta_value) as pb_mins

选择了正确的(最短)时间,但其他详细信息(日期、标题)来自其他 10 英里的运行/比赛。

我已经尝试更改 FROM 子句以使用 LEFT JOININNER JOIN 但同样的事情发生了:选择当我添加 MIN 函数时,“10mi”都运行但给出了错误的输出。

感谢您提供的任何帮助。这是我在这里的第一篇文章,所以如果我需要添加更多详细信息,请告诉我。

最佳答案

我从来没有抽出时间发布我的解决方案。现在已经有一段时间了,所以我什至不记得我是如何得出它的(很可能是反复试验),但如果这对任何人有帮助,欢迎他们使用。如果我想到更多细节,我会将它们添加为对此答案的评论。

            SELECT      p1.ID,
                        m1.meta_value,
                        t1.name
            FROM        $wpdb->posts p1,
                        $wpdb->postmeta m1,
                        $wpdb->term_relationships tr1,
                        $wpdb->term_taxonomy tt1,
                        $wpdb->terms t1,
                        (   SELECT      t2.slug as pb_distance,
                                        MIN(m2.meta_value) as pb_duration
                            FROM        $wpdb->posts p2,
                                        $wpdb->postmeta m2,
                                        $wpdb->term_relationships tr2,
                                        $wpdb->term_taxonomy tt2,
                                        $wpdb->terms t2
                            WHERE       p2.ID = tr2.object_id
                                    AND p2.ID = m2.post_id
                                    AND tr2.term_taxonomy_id = tt2.term_taxonomy_id
                                    AND tt2.term_id = t2.term_id
                                    AND p2.post_type = 'runs'
                                    AND p2.post_status = 'publish'
                                    AND m2.meta_key = 'ssr_duration_min'
                                    AND t2.slug IN $slugs
                            GROUP BY    t2.slug ) pb
            WHERE       p1.ID = m1.post_id
                    AND p1.ID = tr1.object_id
                    AND tr1.term_taxonomy_id = tt1.term_taxonomy_id
                    AND tt1.term_id = t1.term_id
                    AND p1.post_type = 'runs'
                    AND p1.post_status = 'publish'
                    AND m1.meta_key = 'ssr_duration_min'
                    AND t1.slug in $slugs
                    AND m1.meta_value = pb.pb_duration
            ORDER BY    meta_value+0

关于mysql - 在 WordPress 自定义 SELECT 查询中使用 MIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10070591/

相关文章:

sql - 从每组的第一行和最后一行获取值

java - Hibernate 3.5.1、JPA2.0 和 MySQL - 2 个差异数据库/同一服务器内的替代行为

c# - SqlBulkCopy - 哪个数据库导致异常?

php - 如何根据变量的值对列表进行排序? (php)

javascript - "TypeError: Cannot read property ' innerBlocks ' of null"for InnerBlocks in Gutenberg

hadoop - 寻找每个赛季得分最高的主队

MySQL 查询 : Getting the most recent forum post

mysql - CONCAT_WS 三个字段在CREATE TABLE语句中创建PRIMARY KEY

java - 连接到 Google Cloud SQL com.google.cloud.sql.mysql.SocketFactory 转换时出错

CSS 似乎无法正常工作