Mysql CONCAT(meta_键,meta_值)从wp_postemta表中分为不同的列

Mysql CONCAT(meta_键,meta_值)从wp_postemta表中分为不同的列,mysql,wordpress,if-statement,concat,Mysql,Wordpress,If Statement,Concat,在我对我面临的问题做了一些研究之后 我想这是一个使用IF()和CONCAT()函数的语句 合并到一个不同的列。我要做的是合并 将两个值合并为一个,并使第一个值看起来像一列。 这是迄今为止我的sql代码: SELECT IF(meta_key = 'property_id', CONCAT(meta_key, ' ', meta_value), '') AS property_id FROM wp_postmeta, wp_posts,

在我对我面临的问题做了一些研究之后 我想这是一个使用
IF()
CONCAT()
函数的语句 合并到一个不同的列。我要做的是合并 将两个值合并为一个,并使第一个值看起来像一列。 这是迄今为止我的sql代码:

SELECT 
    IF(meta_key = 'property_id',
        CONCAT(meta_key, ' ', meta_value),
        '') AS property_id
FROM
    wp_postmeta,
    wp_posts,
    wp_terms,
    wp_term_taxonomy,
    wp_term_relationships
WHERE
    wp_term_relationships.object_id = wp_posts.ID
        AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
        AND wp_term_taxonomy.term_id = wp_terms.term_id
        AND wp_postmeta.post_id = wp_posts.ID
结果是空的,但行数正确。

切勿在
FROM
子句中使用逗号。始终使用正确、明确的
JOIN
语法

只需将条件移动到
WHERE
子句:

SELECT CONCAT(meta_key, ' ', meta_value) AS property_id
FROM wp_postmeta pm JOIN
     wp_posts p
     ON pm.post_id = p.ID JOIN
     wp_term_relationships r
     ON r.object_id = p.ID JOIN
     wp_term_taxonomy tt
     ON r.term_taxonomy_id = tt.term_taxonomy_id JOIN
     wp_terms t
     ON tt.term_id = t.term_id
WHERE meta_key = 'property_id'
或者,删除
的WHERE
并使用
的CASE

SELECT (CASE WHEN meta_key = 'property_id'
             THEN CONCAT(meta_key, ' ', meta_value)
             ELSE ''  -- Why not `NULL`?
        END) as property_id
我还注意到,对于您正在执行的操作,大多数表都不是必需的


谢谢(Luarb,很抱歉编辑不好)

如果你得到的结果是空的,那么meta_key='property_id'返回false,你得到的总是',尝试使用'empty'进行检查谢谢,这就像一个符咒,我编辑它是因为它是wp.post_id而不是pm.post_id,别介意,非常感谢:Dan关于这个主题的其他问题,我可以将此结果存储到一列中,然后使用另一个meta_键值在另一列中执行相同的操作吗?示例:meta_key=porperty_id是一列,meta_key=property_price是另一列,等等…@luarbbala。我认为你应该问另一个问题,提供样本数据和期望的结果。