sql - 显示价值高于某一特定记录的记录
问题描述
我需要找到值高于其他名称之一的名称列表。我知道如何只显示高于某个值的值,但我不知道如何将其与名称联系起来。
这就是我现在所拥有的,但它不起作用
SELECT t1.Value, t2.Name
FROM dbo.Table1 t1
LEFT JOIN dbo.Table2 t2
ON t1.Id_name = t2.Id_name
WHERE t1.Value > (SELECT t1.Value FROM dbo.Table1 WHERE t2.Name = '@Name')
这是我希望得到的东西
NameWanted = 3 等等:
名称1 4
名称2 5
名称3 4
名称4 4
...
表 1 和表 2 中共有的一列是 Id_name
对我有用的是以下解决方案:
with cte as (
SELECT t1.ID_Name, t1.Name, t2.Value, t2.ID_Value
FROM dbo.Table2 t2
JOIN dbo.Table1 t1 ON t1.ID_Name = t2.ID_Name)
SELECT cte1.Value, cte1.Name
FROM cte cte1
GROUP BY cte1.Value, cte1.Name
HAVING cte1.Value>(SELECT MAX(cte2.Value) FROM cte cte2 WHERE cte2.Name ='@Name' AND cte1.ID_Value = cte2.ID_Value)
解决方案
这解决了问题的原始版本。
您可以使用子查询:
select t.*
from t
where t.value > (select t2.value from t t2 where t2.name = @name);
我最初假设它name
在表中是唯一的。如果没有,您可以使用聚合:
select t.*
from t
where t.value > (select max(t2.value) from t t2 where t2.name = @name);
或all
:
select t.*
from t
where t.value > all (select t2.value from t t2 where t2.name = @name);
推荐阅读
- javascript - 在 .on('close') 分配更新中更新后对象的数组为空
- r - 在R中计算二进制光栅图像中的对象
- reactjs - React typescript 属性“类型”的类型不兼容
- java - 如何在 for 循环中声明 int 变量?
- python - 在VS Code中打开某个文件夹时触发其他程序打开
- spring-boot - 从 K8s configmap 读取时,Spring Boot Actuator 端点不显示属性值
- postgresql - 在 postgres 过程中组合 2 个变量
- c# - 具有 COUNT 的 Dapper 嵌套对象始终返回 0
- stm32 - LED 闪烁“太快”@ NUCLEO-H755ZI-Q
- gitlab - 在 mac 中安装容器化的 gitlab 实例