2011-09-09 119 views

回答

1

您不能將默認值設置爲另一列中的值。相反,如果您的列不是NULL,則可以將其更改爲可空,並將默認值設置爲NULL。然後當你選擇它時,使用這個:

SELECT IFNULL(message_reference_id, message_id) AS message_reference_id 
FROM your_table 

你甚至可以把它放在視圖中。

或者,您可以創建一個更新插入值的trigger

+0

當我選擇時,我正在通過message_reference_id進行分組。所以我不能像上面那樣做。所有具有相同message_reference_id的消息都被視爲一個組(我的意思是有回覆),並且父消息將具有等於message_reference_id的message_id – aparna

+0

@aparna:將GROUP BY message_reference_id更改爲GROUP BY IFNULL(message_reference_id,message_id)' –

1

您可以改爲使用NULL,並在訪問時使用COALESCE(message_reference_id, message_id)

這在一般情況下會給你message_reference_id。但是,如果是NULL,則代之以message_id

編輯:有了這些知識,您可以使用內部和外部查詢 - 例如在內部查詢中使用COALESCE技巧,在外部查詢中使用GROUP BY

但我不知道這個表現如何,因爲GROUP BY可能會使用索引,這是不能以這種方式提供的。

+0

while我正在選擇,我正在通過message_reference_id進行分組。所以我不能像上面那樣做。所有具有相同message_reference_id的消息都被視爲一個組(我的意思是有回覆),父消息的message_id等於message_reference_id – aparna

+0

@aparna編輯。 – glglgl