为缺失的数据库值填充静态值
populate static values for missing database values
我有一个查询要从数据库中提取一些记录 - 使用几个表将代理名称与其销售额联系起来。我的问题是 - 代理 phone_id 和代理 first_name 以及 last_name 并不总是在数据库中。对于这些值,我想填充 "unknown" 作为他们的名字和姓氏。我今天存在的查询 - 只是跳过它们,因为它们不匹配。
select recordings.ident,users.first_name,users.last_name,recordings.agent_number,recordings.device_id from recordings
join agent_phones
on recordings.agent_number=agent_phones.phone_id
join users
on agent_phones.agent_id=users.uid
有没有办法在查询中执行某种 "if"?因此 "if" agent_number 不存在于 agent_phones - 我可以用静态 "unknown" 填充 first_name 和 last_name.
您正在查找 LEFT JOIN
子句,其中还包括无法连接的行(在 second/right table 中没有匹配的行)。来自 second/right table 的值然后是 NULL
.
SELECT recordings.ident, users.first_name, users.last_name, recordings.agent_number, recordings.device_id
FROM recordings
LEFT JOIN agent_phones
ON recordings.agent_number = agent_phones.phone_id
LEFT JOIN users
ON agent_phones.agent_id = users.uid
这可以进一步扩展到 return 指定的字符串而不是 NULL
使用 COALESCE
函数的值:
SELECT
recordings.ident,
COALESCE(users.first_name, 'unknown'),
COALESCE(users.last_name, 'unknown'),
recordings.agent_number,
recordings.device_id
FROM ...
我有一个查询要从数据库中提取一些记录 - 使用几个表将代理名称与其销售额联系起来。我的问题是 - 代理 phone_id 和代理 first_name 以及 last_name 并不总是在数据库中。对于这些值,我想填充 "unknown" 作为他们的名字和姓氏。我今天存在的查询 - 只是跳过它们,因为它们不匹配。
select recordings.ident,users.first_name,users.last_name,recordings.agent_number,recordings.device_id from recordings
join agent_phones
on recordings.agent_number=agent_phones.phone_id
join users
on agent_phones.agent_id=users.uid
有没有办法在查询中执行某种 "if"?因此 "if" agent_number 不存在于 agent_phones - 我可以用静态 "unknown" 填充 first_name 和 last_name.
您正在查找 LEFT JOIN
子句,其中还包括无法连接的行(在 second/right table 中没有匹配的行)。来自 second/right table 的值然后是 NULL
.
SELECT recordings.ident, users.first_name, users.last_name, recordings.agent_number, recordings.device_id
FROM recordings
LEFT JOIN agent_phones
ON recordings.agent_number = agent_phones.phone_id
LEFT JOIN users
ON agent_phones.agent_id = users.uid
这可以进一步扩展到 return 指定的字符串而不是 NULL
使用 COALESCE
函数的值:
SELECT
recordings.ident,
COALESCE(users.first_name, 'unknown'),
COALESCE(users.last_name, 'unknown'),
recordings.agent_number,
recordings.device_id
FROM ...