此查询:
WITH cte as (
SELECT
user.id,
user.name,
product.id as 'product_id',
product.price,
product.name as 'product_name',
DENSE_RANK() OVER (ORDER BY user.id) AS dr
) select
user.id,
user.name,
product_id as 'id',
product.price,
product_name as 'name'
from cte
WHERE dr between 1 and 3
ORDER BY id, product_id
返回以下内容:
id;name;id;price;name;dr
1;Adam;16;500;book;1
2;Adam;51;600;guitar;1
3;Adam;16;100;mouse;1
4;Bob;32;300;car;2
5;Jan;77;2000;car;3
这个列结构正是我所需要的,因为我的ORM
库要求user
和product
id列都命名为:id
。我存档的方式是将id
更改为product_id
,然后在第二次选择时更改为id
。这在我看来很奇怪-有没有更简单的方法可以做到这一点?
1条答案
按热度按时间wn9m85ua1#
我 不 知道 您 的 查询 有 多 复杂 , 但 这里 有 另 一 种 方法 , 在
where
子句 中 使用distinct top
和order by
。 如果 您 需要 选择 id 的 范围 , 可以 修改 该 子 查询 以 使用offset
和fetch
。中 的 每 一 个