我想根据表格中的字段field_value
是NULL
为结果集添加一列。
这是我的查询:
SELECT field_id, (
SELECT field_value
FROM employee_field_info
WHERE employee_id = '1'
AND field_id = persona_fields.field_id
) AS field_value, (
SELECT field
FROM FIELDS WHERE id = persona_fields.field_id
) AS field_name
FROM persona_fields
WHERE persona_id = '1'
如果field_value
为NULL
,我希望能够添加tinyint(对于bool)列。
我试过这个:
SELECT field_id, (
SELECT field_value
FROM employee_field_info
WHERE employee_id = '1'
AND field_id = persona_fields.field_id
) AS field_value, (
SELECT field
FROM FIELDS WHERE id = persona_fields.field_id
) AS field_name,
IF(field_value IS NULL, "0","1") AS value_bool
FROM persona_fields
WHERE persona_id = '1'
但是,只是在“字段列表”中出现了“未知列'field_value'。” 无论如何我能完成我想要做的事情,还是我几乎没有运气?
答案 0 :(得分:2)
您无法从子选择中引用父SELECT
中的列。子选择基本上是孤立运行的。您需要做的是将其重写为JOIN
。您的查询非常复杂且难以理解,我认为不完整,所以我只能近似解决方案。
以下是一个例子:
SELECT field_id,
employee_field_info.field_value,
IF(employee_field_info.field_value IS NULL, "0","1") AS value_bool
FROM persona_fields
LEFT JOIN employee_field_info ON employee_field_info.field_id=persona_fields.field_id
WHERE employee_id=1
答案 1 :(得分:0)
我认为答案就在这里......您正试图获得 field_list 中没有的字段。有时您会收到此错误,因为您正在使用数据库开发工具,其中该字段已修改但尚未提交。
关于你的查询:最好避免这种简单结果的子查询,简单的连接就可以了。