2010-08-17 100 views
1

我有一個簡單的表,記錄管理員所做的簡單事件。沒什麼複雜。MySql如果語句

其中一列是userid,這樣我就可以從用戶表中引用用戶名:

SELECT u.username FROM `users` u, `history` h WHERE u.userid = h.userid 

我的問題是內部的系統也會記錄事件(就像一個用戶),但有沒有與內部系統相關的用戶標識。它在記錄中簡單地記錄爲零。

有沒有辦法修改查詢來反映這個?我試過了一個LEFT JOIN,但是這並不讓我指定「system」作爲用戶名。我能做的另一件事是在用戶的表中輸入一個新用戶,並將其稱爲「內部系統」。但我真的不想那樣做。

是否可以從查詢級別執行此操作?

回答

1

用途:

SELECT COALESCE(u.username, 'SYSTEM') AS username, 
    FROM HISTORY h 
LEFT JOIN USERS u ON u.userid = h.userid 

COALESCE將返回第一個非NULL值,所以如果你LEFT JOIN到用戶和username是NULL - 那麼「系統」或任何你喜歡的就會出現。