MySql If语句

时间:2010-08-17 00:13:27

标签: sql mysql database

我有一个简单的表,记录管理员所做的简单事件。没什么复杂的。

其中一列是userid,因此我可以从users表中引用用户名:

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

我的问题是内部系统还记录事件(就像用户一样),但没有与内部系统相关的用户ID。它只是在记录中记录为零。

有没有办法修改查询以反映这一点?我尝试过LEFT JOIN,但这不允许我指定“system”作为用户名。我能做的另一件事是在用户表中输入一个新用户,并将其称为“内部系统”。但我真的不想这样做。

是否可以从查询级别执行此操作?

1 个答案:

答案 0 :(得分:1)

使用:

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

COALESCE将返回第一个非NULL值,因此如果您LEFT JOIN到USERS并且username为NULL - 那么“system”或您喜欢的任何内容都会出现。