sql - 如果连接存在,则从连接表返回值
问题描述
我有两张表,下面有列
存货:
Id Name Price
1 Item1 1€
和表
库存价格:
Id Price
1 2€
我只想为每个项目选择一行。如果存在连接,那么我需要从我的第一个表“Inventory”中选择“InventoryPrices”中的价格。到目前为止,如果“InventoryPrices”与第一个表“Inventory”连接,它会为每个 ID 返回两行。
我如何检查连接是否不为空,然后显示第二个表价格的一行
解决方案
要检查InventoryPrices
表中是否存在记录,您需要使用LEFT JOIN
要为每个 Id 获取一行,您可以使用ROW_NUMBER()
如下查询。
SELECT *
from
(
SELECT t1.id,
t1.NAME,
COALESCE(t2.price,t1.price) AS price ,
Row_number() OVER(partition BY t1.id ORDER BY t1.id) rn
FROM inventory t1
LEFT JOIN inventoryprices t2
ON t1.id=t2.id
) t
WHERE t.rn=1
推荐阅读
- locking - 为什么要在 XV6 调度程序中禁用中断?
- z3py - 如何向 BitVec 变量添加信息并使用 get_vars() 取回该变量?
- django - django本地静态文件配置
- c - 如何将字符串和数值写入文件
- scala - 如何将方法的返回类型与 Scala 本机或 TypeTag 进行比较?
- javascript - 使用 Tailwind-CSS 在 HTML 元素中删除或添加类后浏览器未更新
- c++ - Gnuplot_i.hpp C++ 接口绘制局部变量而不是文件
- google-cloud-platform - PubSub 死字
- javascript - 列表
- 按对象值从低到高排列的项目
- c++ - Adafruit Feather RFM69HCW 在使用过程中冻结,需要硬重置