我的表格如下。
表值
ID Values
---- ------
A1 ---- 3
A2 ---- 3
A3 ---- 3
A4 ---- 3
A5 ---- 5
A6 ---- 6
A7 ---- 6
表优先级
ID ------ Priority
A3 ----- 1
A2 ----- 2
A1 ----- 3
A5 ----- 4
A6 ----- 5
A4 ----- 6
A7 ----- 7
我希望根据小于5的值的优先级找到最低的2值ID。 如果一个或多个ID具有相同的值,则使用优先级表中的优先级并从中获取前2个值。 对于上述情况,A1,A2,A3和A4具有相同的值并且小于5.然后它应该遵循优先级表中给出的优先级并获取前2个记录。对于上述情况,它应该显示
ID ---- Values
A3 ---- 3
A2 ---- 3
答案 0 :(得分:0)
您可以通过将表连接在一起,过滤value
上标准的第一个表来完成此操作。然后订购结果并选择前两个:
select v.*
from values v join
priority p
on v.id = p.id
where v.value < 5
order by priority
limit 2;
不同的数据库引擎有不同的方法将结果限制为2
。因此,limit
子句可能是其他内容,例如select top 2
,具体取决于数据库。
答案 1 :(得分:0)
SELECT TOP 2 tv.ID, tv.Values
FROM table_values tv
INNER JOIN table_priorities tp
ON tv.Id = ip.ID
WHERE tv.values < 5
ORDER BY tv.values, tp.priority