我有一个简单的表,记录管理员所做的简单事件。没什么复杂的。
其中一列是userid
,因此我可以从users表中引用用户名:
SELECT u.username FROM `users` u, `history` h WHERE u.userid = h.userid
我的问题是内部系统还记录事件(就像用户一样),但没有与内部系统相关的用户ID。它只是在记录中记录为零。
有没有办法修改查询以反映这一点?我尝试过LEFT JOIN,但这不允许我指定“system”作为用户名。我能做的另一件事是在用户表中输入一个新用户,并将其称为“内部系统”。但我真的不想这样做。
是否可以从查询级别执行此操作?
答案 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”或您喜欢的任何内容都会出现。