sql-server-2012 - sql中的INNER连接表
问题描述
我有两张表要连接在一起。
表_A:
+--------+-----------+---------+
| row_id | category | val_1 |
+--------+-----------+---------+
| 1 | cat1 | 6.5 |
| 1 | test | 6.5 |
| 1 | dog1 | 2.1 |
+--------+-----------+---------+
表_B:
+-----------+-----------+
| row_id | val_2 |
+-----------+-----------+
| 1 | 2.0 |
+-----------+-----------+
当我使用 INNER JOIN 时,得到如下结果:
+-----------+-----------+-----------+------------+
| row_id | category | val_1 | val_2 |
+-----------+-----------+-----------+------------+
| 1 | cat1 | 6.5 | 2.0 |
| 1 | test | 6.5 | 2.0 |
| 1 | dog1 | 2.1 | 2.0 |
+-----------+-----------+-----------+------------+
但我不想重复 Val_2 的结果。我想要这样的结果:
+-----------+-----------+-----------+------------+
| row_id | category | val_1 | val_2 |
+-----------+-----------+-----------+------------+
| 1 | cat1 | 6.5 | 2.0 |
| 1 | test | 6.5 | NULL |
| 1 | dog1 | 2.1 | NULL |
+-----------+-----------+-----------+------------+
如果有人可以帮助我,我将不胜感激。
解决方案
这行得通吗,迈克?这可能不是您所需要的,但您可以根据需要进行调整。
SELECT
TABLE_A.*,
CASE ROW_NUMBER() OVER(PARTITION BY TABLE_B.val_2 ORDER BY TABLE_A.row_id DESC)
WHEN 1 THEN TABLE_B.val_2
ELSE NULL
END as val_2
FROM
TABLE_A
INNER JOIN
TABLE_B ON TABLE_A.row_id = TABLE_B.row_id
ORDER BY
TABLE_A.Row_id
推荐阅读
- java - 开源远程呼叫指标跟踪
- python - Pandas 用 Nan 将两列相加
- java - 从 FirebaseAdapter 的 Listview 中删除或隐藏列表项
- html - 使用 Container 和 Columns 使用 Bootstrap 设置正确的边距/填充
- c# - 如何将字符串值从父表单发送到子表单(反之亦然)
- javascript - 我应该总是对返回承诺的函数使用 redux-saga `call` 效果吗?
- javascript - Next.js React 应用程序未显示自定义组件内容
- sql - Sequelize Many to Many Relationship using Through 不会插入额外的属性
- android - 如何将我的 Android 代码转换为 Firebase 函数的 Swift 代码?
- php - PHP - 如何根据元素的数量从内部循环打印时删除重复的数组元素