【发布时间】:2017-02-06 08:48:38
【问题描述】:
我想使用 IF() 函数将某些列值转换为列 和 CONCAT() 函数,但我无法以某种方式正确。 在我运行这个 sql 之后:
SELECT
IF( meta_key = 'property_id', CONCAT(meta_key, ' ', meta_value), 'false' ) AS property_id,
IF( meta_key = 'property_contract', CONCAT(meta_key, ' ', meta_value), 'false' ) AS property_contract,
IF( meta_key = 'property_agents', CONCAT(meta_key, ' ', meta_value), 'false' ) AS property_agents
FROM wp_postmeta
WHERE property_id !='faslse'
and property_agents = 'John Doe'
我收到此错误:1054 - 'where 子句'中的未知列 'property_id'
编辑:
我正在尝试此查询,但返回 0 行...
select *
from
( select
IF( meta_key = 'property_id', CONCAT(meta_key, ' ', meta_value), 'false' ) AS property_id,
IF( meta_key = 'property_contract', CONCAT(meta_key, ' ', meta_value), 'false' ) AS property_contract,
IF( meta_key = 'property_agents', CONCAT(meta_key, ' ', meta_value), 'false' ) AS property_agents
from
wp_postmeta) p
WHERE
p.property_id != 'false'
and p.property_contract != 'false'
and p.property_agents!= 'false'
【问题讨论】:
-
关于编辑:查询将返回 0 行,因为所有三个值不会同时为 != 'false',这是可以预料的:如果 meta_key 值为 property_id、meta_value 和 property_value将是假的,任何其他值也是如此
-
@fthiella 我该如何解决这种情况?
-
我会更新我的答案,从问题中不清楚,但我想我知道问题出在哪里
标签: mysql if-statement concat