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。我认为你应该问另一个问题,提供样本数据和期望的结果。