sql - 加入两列
问题描述
我有两张桌子
table_1
:
NAME VALUES_WANTED
A-1 value_1
A-1 value_2
A-1 value_3
A-1 value_4
A-1 value_5
A-2 value_1
A-2 value_2
A-2 value_3
A-2 value_4
A-2 value_5
和 table_2
:
NAME VALUES TAGS
A-1 value_1 a
A-1 value_2 aa
A-1 value_3 s
A-1 value_4 b
A-1 value_y e
A-1 value_x sd
A-2 value_1 g
A-2 value_2 fe
A-2 value_3 k
A-2 value_5 m
我想得到下表:
NAME VALUES_WANTED TAGS
A-1 value_1 a
A-1 value_2 aa
A-1 value_3 s
A-1 value_4 b
A-1 value_5 Null
A-2 value_1 g
A-2 value_2 fe
A-2 value_3 k
A-2 value_4 Null
A-2 value_5 m
基本上,它类似于查找 TAGS
for VALUES_WANTED
。如果VALUES_WANTED
缺少table_2
,它应该返回Null
它的TAGS
.
我知道我需要加入NAME
和VALUES
。一直在尝试JOIN
以下不同的方法,但仍然失败......
SELECT a.NAME, a.VALUES, a.TAGS, s.VALUES_WANTED
FROM table_2 a
RIGHT JOIN table_1 s
ON a.NAME = s.NAME
AND a.VALUES = s.VALUES_WANTED
非常感谢任何帮助。
解决方案
使用左连接
SELECT a.NAME, a.VALUES_WANTED, b.TAGS
FROM table_1 a
left JOIN table_2 b
ON a.NAME = b.NAME
AND a.VALUES = b.VALUES_WANTED
推荐阅读
- amazon-web-services - 如何在运行 cdk deploy 时更改 aws 区域
- reactjs - “CreateOptionActionMeta”类型上不存在属性“选项”
- php - 在字符串中插入变量
- javascript - 如果以特定方式回答问题,如何清除特定文本区域?(通过谷歌表格到谷歌文档)
- spring-boot - @SpringBootTest:预测试日志默认设置为调试?
- python - pip install pyvlfeat 错误:“致命错误 C1189:#error:snprintf 的宏定义与标准库函数声明冲突”
- r - 使用虚拟变量创建一个排名互斥的变量。R
- java - 使用扫描仪获取输入是 String 还是 Int
- windows - ASP.NET Core:无法启动 Kestrel。试图以权限禁止的方式访问套接字
- ros - 从原生 ePromisa DDS 程序订阅 ROS2 主题