如果该值为NULL,则返回上一级值
问题描述:
我有此查询:如果该值为NULL,则返回上一级值
SELECT
`mp__reference`.`referenceid`
, `mp__reference`.`description`
, `mp__reference`.`starts`
, `mp__reference`.`ends`
FROM
`mp`.`mp__portal`
INNER JOIN `mp`.`mp__revision` ON (`mp__portal`.`revisionidfk` = `mp__revision`.`revisionid`)
INNER JOIN `mp`.`mp__campaign` ON (`mp__revision`.`campaignidfk` = `mp__campaign`.`campaignid`)
INNER JOIN `mp`.`mp__helperusergroupcampaign` ON (`mp__helperusergroupcampaign`.`campaignidfk` = `mp__campaign`.`campaignid`)
INNER JOIN `mp`.`mp__usergroup` ON (`mp__helperusergroupcampaign`.`usergroupidfk` = `mp__usergroup`.`usergroupid`)
INNER JOIN `mp`.`mp__helperuserusergroup` ON (`mp__helperuserusergroup`.`usergroupidfk` = `mp__usergroup`.`usergroupid`)
INNER JOIN `mp`.`mp__user` ON (`mp__helperuserusergroup`.`useridfk` = `mp__user`.`userid`)
INNER JOIN `mp`.`mp__position` ON (`mp__position`.`portalidfk` = `mp__portal`.`portalid`)
INNER JOIN `mp`.`mp__group` ON (`mp__group`.`positionidfk` = `mp__position`.`positionid`)
INNER JOIN `mp`.`mp__reference` ON (`mp__reference`.`groupidfk` = `mp__group`.`groupid`)
WHERE userid = $_SESSION['userid']
AND MD5(groupid) = $_SESSION['groupid']
可以考虑实体:活动< - 修订< - 位置< - 组< - 引用作为“daisychained “一起从上到下。
所有这些都包含属性“开始”和“结束”。
我需要检查是否设置了较低级别的值。如果没有,它返回这样的伪代码的下一个上电平值:
if (reference.starts) then
return reference.starts
else if (group.starts) then
return group.starts
else if (position.starts) then
return position.starts
etc... and the same thing for .ends
是的,我可以提取所有的值,然后做一个后比较 - 但我想学习有效的SQL-查询。
任何想法,非常感谢。
是的,工作完美无瑕。我其实早先尝试过这个命令;不知怎的,肯定是用错了。 – Anders 2014-10-11 09:35:43
没问题。另外,特别是如果你想与'null'以外的其他值比较 - 你可以看看'CASE ... WHEN ... THEN ...'函数(参见http://dev.mysql.com /doc/refman/5.5/en/control-flow-functions.html) – Trinimon 2014-10-11 09:46:01