繁体   English   中英

Mysql如何查询组值?

[英]How group values in Mysql query?

我有查询:

SELECT      p.`obj_id` , 
            p.`alt_name` , 
            o.`name`,
            p.`id`,
            oc.`text_val`,
            oc.`float_val` 
FROM        `cms3_hierarchy` p 
LEFT JOIN   `cms3_objects` o 
    ON      p.`obj_id` = o.`id` 
LEFT JOIN   `cms3_object_content` oc 
    ON      p.`obj_id` = oc.`obj_id` 
WHERE       (oc.`field_id` = 221 OR oc.`field_id` = 248 ) 
    AND     (p.`rel`=903687) LIMIT 0,50

但是这样回答:

obj_id name id 221  248
1      first    2    null
1      first    null  3

好吧,我有一个具有不同值的obj_id。 但是对我来说,看起来像这样:

obj_id name id 221  248
1      first    2    3

这个怎么做?

仅在ON子句中指定LEFT JOIN右表上的条件,当它们在WHERE子句中时,由于NULL比较,该连接会自动变为INNER JOIN
同样,使用IN()将同一列与多个值而不是OR 我还使用MAX()将行分组为一行,因此:

SELECT p.obj_id , p.alt_name , o.name,p.id,
       MAX(CASE WHEN oc.field_id = 221 THEN oc.text_val END) as col_221,
       MAX(CASE WHEN oc.field_id = 1123 THEN oc.text_val END) as col_1123,
       MAX(oc.float_val)
FROM cms3_hierarchy p 
LEFT JOIN cms3_objects o 
 ON p.obj_id = o.id 
LEFT JOIN cms3_object_content oc
 ON p.obj_id = oc.obj_id  and oc.field_id in(221,248,1123)
WHERE p.rel=903687 
LIMIT 0,50
GROUP BY p.obj_id , p.alt_name , o.name,p.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM