2011-08-02 131 views
1

我需要获得基于另一个值的原始SQL查询的帮助。MySQL - 合并两个连接结果

我有以下的原始SQL查询。

SELECT pmPropDef.id, pmPropDef.name, pmPropDef.units, pmPropShort.str, pmPropLong.str 
FROM pmProp INNER JOIN pmPropDef ON pmProp.propid=pmPropDef.id AND pmPropDef.name = 'Area' 
LEFT JOIN pmPropShort ON sid=pmProp.value 
LEFT JOIN pmPropLong ON lid=-pmProp.value 
WHERE pmProp.ownertype='variant' AND pmPropDef.id = pmProp.propid; 

,这导致了以下内容:

+----+------+-------+------+------+ 
| id | name | units | str | str | 
+----+------+-------+------+------+ 
| 14 | Area | mm2 | 1.1 | NULL | 
+----+------+-------+------+------+ 

的问题,我都获得和pmPropShort.str和pmPropLong.str我应该是投注一个或另一个。我真正想要的是一个单独的str值?如何重新编写此查询以满足我的需求?

回答

2

您可以使用COALESCE,它返回第一个非NULL参数。例如。

COALESCE(pmPropShort.str, pmPropLong.str) 
+0

不要忘了给它一个别名,e.g.'AS str' –

+0

真棒!非常感谢! – rh0dium

0

您是否有优先权?如果长时间

例子是优先

SELECT pmPropDef.id, pmPropDef.name, pmPropDef.units, 
IF(pmPropLong.str IS NOT NULL,pmPropLong.str,pmPropShort.str) as str 
FROM ...rest of your query