mysql中如何基于多个表计算一列
我在多个其他表中有源行和相关项。如何从其他表中获取计算列?计算列将用于源表中的每一行。像mysql中如何基于多个表计算一列,mysql,Mysql,我在多个其他表中有源行和相关项。如何从其他表中获取计算列?计算列将用于源表中的每一行。像 SELECT sources.name as name, COMPUTED_VALUE( first_related_items, second_related_items, third_related_items) as result FROM sources 计算列的派生形式如下 if(value for source row in first
SELECT
sources.name as name,
COMPUTED_VALUE(
first_related_items,
second_related_items,
third_related_items) as result
FROM sources
计算列的派生形式如下
if(value for source row in first table == 0){
return 0
}
else if(value for source row in second table == 0){
if(value for source row in third table == 1){
return 1
} else {
return 0
}
} else if(value for source row in third table != NULL){
return value for source row in third table
} else {
return -1
}
您可以联接所有四个表,并将此列计算为
大小写
表达式:
SELECT s.id,
CASE WHEN fri.value = 0 THEN 0
WHEN sri.value = 0 THEN CASE WHEN tri = 1 THEN 1 ELSE 0 END
WHEN tri IS NOT NULL THEN tri
ELSE -1
END AS computed_value
FROM sources s
LEFT JOIN first_related_items fri ON fri.source_id = s.id
LEFT JOIN second_related_items sri ON sri.source_id = s.id
LEFT JOIN third_related_items tri ON tri.source_id = s.id
请编辑您的问题并添加示例数据和所需结果。如果没有示例数据,您的伪代码就没有意义。例如,“第一个表中的值”是什么意思?有价值吗?所有的价值观?基于某种用户输入的特定值?您能详细说明第三个表吗?你要空吗?
SELECT s.id,
CASE WHEN fri.value = 0 THEN 0
WHEN sri.value = 0 THEN CASE WHEN tri = 1 THEN 1 ELSE 0 END
WHEN tri IS NOT NULL THEN tri
ELSE -1
END AS computed_value
FROM sources s
LEFT JOIN first_related_items fri ON fri.source_id = s.id
LEFT JOIN second_related_items sri ON sri.source_id = s.id
LEFT JOIN third_related_items tri ON tri.source_id = s.id