2011-08-02 127 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