sql - 当左表中没有值时连接表
问题描述
我有 2 个包含一些数据的表,当值不存在于 clients 表和 custom_clients 表中时,我尝试加入它们。当值不在 custom_clients 表中时加入表时它工作正常,但当值不存在于 clients 表中时不会。
clients
id language_id key text
1 1 client_account new account
2 2 client_signin signin
custom_clients
id language_id key text
1 1 client_name name
2 2 client_signin login
The output should be a table like
language_id key text
1 client_account new account
1 client_name name
2 client_signin login
这是我尝试过的
SELECT language_id, key, text FROM clients
INNER JOIN custom_clients ON custom_clients.language_id = clients.language_id
解决方案
一种方法使用完全外连接:
SELECT
COALESCE(cc.language_id, c.language_id) AS language_id,
COALESCE(cc."key", c."key") AS "key",
COALESCE(cc.text, c.text) AS text
FROM clients c
FULL OUTER JOIN custom_clients cc
ON cc.language_id = c.language_id AND
cc."key" = c."key";
演示
编辑:
USING
这可以通过以下子句稍微简化:
SELECT language_id, "key",
COALESCE(cc.text, c.text) AS text
FROM clients c FULL OUTER JOIN
custom_clients cc
USING (language_id, "key");
推荐阅读
- python - Jupyter notebook 无法在 Anaconda 环境中启动
- idris - 如何解决 Idris 中“找不到导入效果”的问题?
- powershell - 我可以使用管道连续两次在字符串上使用拆分吗?
- react-native - 使用 react native 0.59.5 删除警告 viewPagerAndroid
- php - 需要 PHP/CSS 更改
- laravel - 使用条件仅在 laravel 控制器中为管理员用户获取数据
- linux-kernel - 在内核模块中分配大页面
- java - 为什么 webdriver 在隐式等待中等待的时间比定义的时间长?
- python - Python - 如何在 SQL 服务器上添加新列并插入列表行
- c - C 字符串文字和指针赋值